<分区>
首先,我要感谢“eddie_cat”先生对我的问题提供了有效的答复。他拥有“ScreenCapture”方法的功劳。虽然这种方法不能解决我的问题(在 Windows 服务端它不起作用),但我相信代码可以在普通的 Windows 窗体中用于屏幕捕获。
以为我找不到解决问题的方法,我从先生那里找到了一个很好的建议“ 大卫·皮拉斯” Windows service couldnt get screenshot in windows 7
他的帖子说:
“Windows 服务被设计为在没有用户连接时也能运行,它的工作方式就像一个服务器进程,总是启动并监听,或者启动并做某事,或者空闲。
我认为您需要的是一个客户端应用程序,它在每个登录用户的 session 中运行并最终完成工作,然后在需要时与服务通信以完成一些工作。
我在这里说的是,您可以创建一个小型可执行文件(可能根本没有 UI),在每次用户登录时从所有用户的启动文件夹启动,而不是让 Windows 服务在 0 之外的另一个 session 中运行。这样的应用程序然后在正确的 session 中运行并可以访问它,它可以获得屏幕截图,然后将其存储在某个地方或调用 Windows 服务中的某些端点(始终在 session 0 中运行)并使服务详细说明屏幕截图取自它的客户端应用程序。
这就是我要做的方式,而不是尝试一些“魔法”来告诉 Vista 和 7 在用户 session 中启动服务,最终在系统启动时尚未登录。"