4

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

4

2 回答 2

6

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

于 2008-12-04T11:37:50.050 回答
5

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

于 2009-06-17T01:47:27.663 回答