我有一个由CreateProcess()
创建的新桌面(通过CreateDesktop()
执行)的应用程序。然后,我想知道是否存在某些特定功能(或其他方式),有可能知道是否存在在此新桌面内运行的其他进程(我的除外),例如当我在此新桌面上执行任何其他软件时,是否有可能检测到您的在场吗?
如果有任何建议/解决方案,谢谢您。
答案 0 :(得分:6)
进程未绑定到特定的桌面。各个线程都是。一个进程可以有多个线程同时在不同的桌面上运行。
对于UI应用程序,您可以使用EnumDesktopWindows()
和GetWindowThreadProcessId()
来检查GetCurrentProcessId()
来查找桌面中正在运行的所有窗口。
/ p>
但是,对于非UI应用程序,您必须枚举系统上所有正在运行的线程,例如使用CreateToolhelp32Snapshot()
,使用GetThreadDesktop()
来枚举哪些属于您的桌面以及哪些属于您的桌面。然后使用GetProcessIdOfThread()
和GetCurrentProcessId()
检查它们是否属于您的进程。