【问题标题】:::FindWindow fails from Service application::FindWindow 从服务应用程序失败
【发布时间】:2008-12-04 10:17:21
【问题描述】:

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

【问题讨论】:

  • 是的,这是一个设计问题。你肯定需要使用IPC机制,而不是在windows上操作。

标签: c++ windows winapi service


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多