【发布时间】:2021-05-12 12:35:24
【问题描述】:
我想创建一个Memory Device Context,我可以用它来调用GDI 函数、绘制窗口(使用WM_PRINTCLIENT)等,从一个不能访问桌面的程序(例如从一个Windows 服务)没有桌面权限或锁定屏幕)。
通常情况下,我会使用CreateCompatibleDC(),但它需要从源hDC 进行复制,因此如果调用程序没有桌面,则此功能不可用。 CreateDC("DISPLAY",...) 也会因为同样的原因在这里失败。
我需要的是一个软件设备上下文,它能够运行任何正常的 DC 调用,但与我可以用来从中获取结果的特定 BITMAP 相关联。
有没有办法解决这个问题?也许借用打印机驱动程序? (我不需要高性能)。
我需要它才能在 Windows Server 2019 上工作,并且我可以使用 C#、C++ 等。
【问题讨论】:
-
CreateCompatibleDC(nullptr)不起作用? -
@JonathanPotter 不跨越会话边界,不
-
@RemyLebeau 我认为我不需要跨越会话边界。我想与与我在同一会话中的程序进行交互;他们都在同一个会话中没有真正的桌面(想想 Docker)。
-
@JonathanPotter 事实证明
CreateCompatibleDC(nullptr)确实 工作,至少在我的情况下。 ??????????♂️谢谢。你能把它写成答案,这样我就可以结束我的问题了吗?