我有基于 DirectShow 的屏幕捕捉软件。它在内部调用 CopyScreenToBitmap 函数来抓取屏幕。然后图片被ffdshow压缩。它作为桌面应用程序运行良好,但作为窗口服务,在某些计算机上它不起作用(黑色图片)。我已设置“允许服务与桌面交互”并在当前用户帐户上运行该服务。有什么想法可能是错的吗?
我在 Windows XP 上对其进行了测试,但预计它也可以在 Vista 和 7 上运行。
是的,它在所有计算机上都作为桌面应用程序工作,但在其中一些(大多数)上它作为服务失败。
我有基于 DirectShow 的屏幕捕捉软件。它在内部调用 CopyScreenToBitmap 函数来抓取屏幕。然后图片被ffdshow压缩。它作为桌面应用程序运行良好,但作为窗口服务,在某些计算机上它不起作用(黑色图片)。我已设置“允许服务与桌面交互”并在当前用户帐户上运行该服务。有什么想法可能是错的吗?
我在 Windows XP 上对其进行了测试,但预计它也可以在 Vista 和 7 上运行。
是的,它在所有计算机上都作为桌面应用程序工作,但在其中一些(大多数)上它作为服务失败。
据我了解,在 Vista 中进行了一项更改,将服务从控制台用户移到了单独的桌面上。虽然您已勾选“允许访问”桌面的框,但我认为您仍然必须务实地切换服务以使用该桌面。
除了允许访问桌面之外,试试这个:
然后使用以下几种方法之一获取桌面的 DC,包括
CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)
祝你好运