Windows服务屏幕捕获返回黑屏
在Windows系统中,服务(Services)运行在Session 0中,而该会话与用户通过可见的桌面与系统进行交互的其他会话有不同的窗口站和桌面分配。
你可能希望让你的服务切换到活动用户的会话,以建立与他们可见桌面的连接,以便创建其快照 - 你的屏幕截图代码是有效的,但它在自己的桌面上创建了一个快照(这是一个空桌面)。
这里的链接可能会帮助你更好地理解这个问题。
这不是服务本身 - 它是在vshost应用域中运行的代码的调试版本。我从未尝试在vshost环境中运行服务,并且我不知道在这种情况下它可能连接到的窗口站是什么,但我坚持我的答案,并且打赌它与你正在查看和期望截图的活动桌面不同。
是的,你是对的...有没有办法让我更改会话ID?
你无法更改会话(我在先前的回答中不够明确),但你可以让你的服务连接到不同的窗口站和桌面。你的第二个链接回答了如何做到这一点。
最后,我将这个应用程序做成了Windows窗体应用程序。我们无法像你提到的那样更改进程ID。谢谢你的信息。