0

比如说,我有一个 Windows 服务应用程序以及在每个登录的用户会话中运行的窗口客户端应用程序。如果我在每个客户端应用程序中调用 RegisterWindowMessage 并尝试在那里捕获该消息。然后还在服务应用程序中调用具有相同消息名称的 RegisterWindowMessage ,然后在从服务再次调用 SendNotifyMessage 时使用它来通知每个客户端应用程序单个触发事件,这行得通吗?

PS。我使用 C++/MFC 和本机 WinAPI 进行编程。

4

1 回答 1

1

如果您的服务应用程序在系统帐户下运行,则它无法向用户帐户的应用程序发送消息。

您可以尝试以下方法:

  • 遍历所有会话 (WTSEnumerateSessions) 以获取所有 WindowStation,
  • 打开这些站(OpenWindowStation),
  • 每站
    • 将您的进程与工作站关联 (SetProcessWindowStation),
    • 遍历所有工作站桌面(Enumdesktops),
    • 遍历所有窗口(EnumdesktopWindows),直到找到应用程序的窗口之一

不过,您可能会遇到 UAC 的问题。

于 2012-04-18T07:27:30.400 回答