为啥 EnumWindows 不能在服务中工作?
Posted
技术标签:
【中文标题】为啥 EnumWindows 不能在服务中工作?【英文标题】: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 特定的)。 【参考方案1】:服务在会话 0 中运行,具有非交互式桌面。交互式桌面在会话 1 及更高版本中运行。 EnumWindows
枚举调用进程桌面中的窗口。您的服务不在交互式用户的桌面上运行。
如果要枚举特定桌面上的窗口,则需要在该桌面上执行该进程。服务是该工作的错误工具。如果您绝对需要知道服务中的信息,则需要在服务和目标桌面上运行的另一个进程之间使用 IPC。
【讨论】:
对不起@David Heffernan,我不知道第 0 次会议和第 1 次会议是什么。你能给我一个链接来阅读它是什么吗? 从网络搜索这些术语开始:会话 0 隔离以上是关于为啥 EnumWindows 不能在服务中工作?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 MPMoviePlayerController 能在模拟器中工作,而不能在设备中工作?
为啥 getResourceAsStream() 可以在 IDE 中工作,但不能在 JAR 中工作?
为啥字体松鼠 @font-face 生成器不能在 IE8 中工作?
为啥这个 jQuery AJAX PUT 可以在 Chrome 中工作,但不能在 FF 中工作