:: FindWindow从Service应用程序失败

时间:2008-12-04 10:17:21

标签: c++ windows winapi service

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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