【问题标题】:Why EnumWindows Not Working in service?为什么 EnumWindows 不能在服务中工作?
【发布时间】:2015-08-24 08:03:56
【问题描述】:

我只是想枚举系统中的所有顶级窗口。当我在 exe 中使用 EnumWindows 函数时,它会枚举所有窗口。相反,我在我不能使用的服务中使用。它只枚举

C:\Windows\System32\spool\tools\pnt\rpccp.exe C:\Windows\System32\spool\tools\pnt\winfsmgr.exe

仅限这些 exe。我正在创建如下服务。

schService = CreateService(schSCManager, pServiceName, pServiceName, SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,pModuleFile, NULL, NULL, NULL, NULL, NULL);

是否需要任何权限才能从此应用程序(服务)与其他应用程序通信。或者我要做什么进一步做 enumwindows。

【问题讨论】:

  • 这是一个 Windows 编程问题。与 C++ 无关(即使您碰巧使用 C++ 为 windows 编程,问题是 windows 特定的)。

标签: c++ winapi


【解决方案1】:

服务在会话 0 中运行,具有非交互式桌面。交互式桌面在会话 1 及更高版本中运行。 EnumWindows 枚举调用进程桌面中的窗口。您的服务不在交互式用户的桌面上运行。

如果要枚举特定桌面上的窗口,则需要在该桌面上执行该进程。服务是该工作的错误工具。如果您绝对需要知道服务中的信息,则需要在服务和目标桌面上运行的另一个进程之间使用 IPC。

【讨论】:

  • 对不起@David Heffernan,我不知道第 0 次会议和第 1 次会议是什么。你能给我一个链接来阅读它是什么吗?
  • 从网络搜索这些术语开始:会话 0 隔离
猜你喜欢
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2020-05-31
  • 2011-01-06
  • 2021-12-24
  • 2019-02-26
相关资源
最近更新 更多