为什么EnumWindows不能正常运行?

时间:2015-08-24 08:03:57

标签: c++ winapi

我只想枚举一个系统中的所有顶级窗口。当我在exe中使用EnumWindows函数时,它枚举所有窗口。相反,我在服务中使用我无法做到。它只列举

C:\ Windows \ System32下\阀芯\工具\ PNT \ rpccp.exe C:\ Windows \ System32下\阀芯\工具\ 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。

1 个答案:

答案 0 :(得分:4)

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

如果要枚举特定桌面上的窗口,则需要在该桌面上执行该过程。服务是该工作的错误工具。如果您绝对需要了解服务中的信息,则需要在服务与目标桌面上运行的其他进程之间使用IPC。