我有一个在 CreateProcess()
创建的新桌面内执行(通过 CreateDesktop()
)的应用程序。然后我想知道是否存在某些特定功能(或其他方式),可以知道是否存在在这个新桌面内运行的其他进程(除了我的),例如,当我在这个新桌面上执行任何其他软件时,是否可以检测到您的存在吗?
提前感谢您提出任何建议/解决方案。
最佳答案
进程不依赖于特定的桌面。单独的线程是。一个进程可以有多个线程同时运行在不同的桌面上。
对于 UI 应用程序,您可以使用 EnumDesktopWindows()
要查找桌面上运行的所有窗口,请使用 GetWindowThreadProcessId()
和 GetCurrentProcessId()
检查它们是否属于您的进程。
但是,对于非 UI 应用程序,您必须枚举系统上所有正在运行的线程,例如 CreateToolhelp32Snapshot()
,使用GetThreadDesktop()
查看哪些属于您的桌面,然后使用 GetProcessIdOfThread()
和 GetCurrentProcessId()
检查它们是否属于您的进程。
关于delphi - 如何检查是否存在其他进程(超出我的)在由 CreateDesktop() 函数创建的新桌面内运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785875/