delphi - 如何检查是否存在其他进程(超出我的)在由 CreateDesktop() 函数创建的新桌面内运行?

标签 delphi

我有一个在 CreateProcess() 创建的新桌面内执行(通过 CreateDesktop() )的应用程序。然后我想知道是否存在某些特定功能(或其他方式),可以知道是否存在在这个新桌面内运行的其他进程(除了我的),例如,当我在这个新桌面上执行任何其他软件时,是否可以检测到您的存在吗?

提前感谢您提出任何建议/解决方案。

最佳答案

进程不依赖于特定的桌面。单独的线程是。一个进程可以有多个线程同时运行在不同的桌面上。

对于 UI 应用程序,您可以使用 EnumDesktopWindows()要查找桌面上运行的所有窗口,请使用 GetWindowThreadProcessId()GetCurrentProcessId()检查它们是否属于您的进程。

但是,对于非 UI 应用程序,您必须枚举系统上所有正在运行的线程,例如 CreateToolhelp32Snapshot() ,使用GetThreadDesktop()查看哪些属于您的桌面,然后使用 GetProcessIdOfThread()GetCurrentProcessId()检查它们是否属于您的进程。

关于delphi - 如何检查是否存在其他进程(超出我的)在由 CreateDesktop() 函数创建的新桌面内运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785875/

相关文章:

delphi - 如何重建所有项目中的所有配置和所有目标平台?

pascal - 非法表达:如果,则为else语句

Java JNA 无效内存访问

delphi - 使源代码可从 Delphi IDE 写入

delphi - 在 64 位应用程序中使用 SetupAPI 枚举 USB HID 设备

android - SDK 25 是否终止了对 Android 版 Firemonkey 的支持?

Delphi var参数从程序内部设置长度

delphi - 如何在 firemonkey 平台上移动 2d 对象?

delphi - 在Delphi7中,如何检索硬盘唯一序列号?

delphi - 计算声级(以 dB 为单位)