在 Windows CE 6.0 中的进程之间共享 GDI 句柄

Posted

技术标签:

【中文标题】在 Windows CE 6.0 中的进程之间共享 GDI 句柄【英文标题】:Sharing GDI handles between processes in Windows CE 6.0 【发布时间】:2010-09-13 03:12:23 【问题描述】:

我知道 GDI 句柄在“Big Windows”中是唯一的并且是特定于进程的,但它们在 Windows CE 6.0 中的工作方式是否相同?

例如: 我有一个字体管理服务,其他几个服务和应用程序将使用它。此服务具有用于打印和显示的有效字体和配置列表; CreateFontIndirect() 已在它们中的每一个上调用。当这些客户端应用程序之一请求特定字体(和配置)时,我可以返回适当的 HFONT 吗?如果没有,是否有一种安全/有效的方法来复制句柄,例如 DuplicateHandle 用于内核句柄。

我问的原因是,我已经看到通过 PostMessage 传递给另一个应用程序的 HFONT 可以正常工作,但我不认为它们是“应该”的。

【问题讨论】:

【参考方案1】:

我相信你是对的,你不能依赖 HFONT 安全地跨进程传递。

'我问的原因是,我看到通过 PostMessage 传递给另一个应用程序的 HFONT 工作正常,但我不认为它们是'应该'。'

它们没有正确传递,所以没有“应该”。虽然 HFONT 不能保证跨进程工作,但也不能保证它们在进程之间是唯一的。 'Arial' 可能在每个应用程序的特定版本的某个时间点在两个不同的进程中具有相同的 HFONT 值,并且可能随时更改(包括使用它的中途!)

这就像我在画画,但橙色颜料用完了,我把它作为我画架上的第三根管子。我可以伸手去拿你的 easle 并抓住第三个 tupe……但我不能保证它是橙色的……我不能保证它甚至包含油漆!也许你今天在 easle 刷牙……哎呀!

GDI 句柄类似于该示例中的数字“3”。今天,GDI 可能会在所有 easles 上保持相同的管状顺序。它可能会保持其中一些井井有条,而有些则不会(即橙色的'sorta works',但'seafoam green'被破坏了)。它们可能在一个 CE 设备上是有序的,但在另一个设备上却不是。

一如既往,YMMV。

【讨论】:

感谢您的解释。我在 [msft.public.windowsce.embedded][1] 和光盘上提出了问题。 (我认为)展示了与 WinCE 实现的一些混淆。 [1]:groups.google.com/group/microsoft.public.windowsce.embedded/…

以上是关于在 Windows CE 6.0 中的进程之间共享 GDI 句柄的主要内容,如果未能解决你的问题,请参考以下文章

Windows 进程和 WSL Linux 进程之间的共享内存

如何在 Windows CE 6.0 设备中配置 *** 客户端 [关闭]

在两个进程之间共享内存(C、Windows)

摩托罗拉 MC3190 掌上电脑的 windows 6.0 ce 任务管理器

Windows进程间共享内存通信实例

Delphi XE2:在两个不同的进程之间共享一个变量?