我们必须从 Windows 服务运行一个进程并从中获取屏幕截图。
我们尝试了 BitBlt 和 PrintWindow Win32 调用,但都给出了空白(黑色)位图。
如果我们从普通用户进程运行我们的代码,它就可以正常工作。
这甚至是可能的吗?或者有没有其他方法可以尝试?
我们尝试过的事情:
- Windows 服务作为本地系统运行,以本地系统运行进程 -> 屏幕截图失败
- 以管理员身份运行的 Windows 服务,以管理员身份运行进程 -> 屏幕截图失败。
- 以用户 XYZ 身份运行的 Windows 应用程序以 XYZ 身份运行进程 -> 屏幕截图适用于 BitBlt 或 PrintWindow。
- 尝试从本地系统检查“允许服务与桌面交互”
我们还注意到 PrintWindow 更适合我们的情况,如果窗口位于另一个窗口后面,它就可以工作。
对于其他要求,父进程和子进程必须在同一用户下。我们不能真正使用从一个进程到另一个进程的模拟。