我在windows服务中使用了Capture Screen,所有的代码在win表单中都能正常工作,但在win服务中返回黑色图片,所以我搜索并找到this,并尝试找到选中的"Allow service to interact with desktop“(在服务属性中),但没有任何具有该名称的属性。对此有什么想法吗?我如何/在哪里可以找到它?我使用的是Windows Server2008、R2、SP1、VS2010和C#4,如果这个版本没有任何属性,我该怎么办?
发布于 2011-12-22 20:54:41
该设置是遗留设置,无法解决您的问题。从Vista开始,您的服务不能访问交互式桌面,您需要从交互式桌面上运行的标准应用程序执行屏幕捕获。
您可以使用IPC机制在您的服务和桌面应用程序之间进行通信。你可以从一个服务启动这个桌面应用,但这是相当棘手的,正如here所解释的那样。
选中“允许服务与桌面交互”只是意味着您可以毫无错误地调用交互式API函数。您无法访问非活动桌面。这个问题都源于Vista中引入的更改,这些更改意味着服务在一个独立的会话中运行,即会话0。
发布于 2011-12-22 20:54:36
要设置此属性,您必须打开windows服务管理,右键单击您的服务并打开属性。之后,选择“登录”选项卡。当您的服务在本地系统下运行时,您可以选择“允许服务与桌面交互”。
https://stackoverflow.com/questions/8604127
复制相似问题