2008-12-04 75 views
4

从API调用时,Windows API :: FindWindow函数失败。 GetLastError()也返回0(成功?)。这是一些特权访问权限问题吗?你认为这是设计问题,我应该使用另一种IPC方法?:: FindWindow从服务应用程序失败

+0

是的,这是一个设计问题。您肯定需要使用IPC机制,而不是在Windows上运行。 – 2009-06-17 01:47:50

回答

6

leppie的权利,Windows服务通常被拒绝与桌面交互。你可以在XP和更早版本中绕过它,但在Vista和更高版本中将无法做到。您最好将桌面和用户交互委托给GUI应用程序。有关详细信息,请参阅document

5

服务在会话0中运行。在XP和更早版本上,第一个登录用户也在会话0中运行,并且后续用户在会话1和更高版本中运行。如果服务设置为“与桌面交互”,则它可以访问在会话0中运行的任何用户窗口。但是,从Vista开始,用户从不再运行会话0。 FindWindow()只能在调用它的Session的上下文中工作,因为窗口不能跨越Session边界访问。

相关问题