Win32:获取其他应用程序关闭/退出的消息通知

2023-12-14

我的应用程序需要监视系统上所有其他正在运行的应用程序。有什么方法可以在每个应用程序 exe 退出时收到通知吗?

我能找到的方法:

1) 使用 PSAPI 函数定期获取正在运行的 exe 列表。每次轮询时都会与之前的列表进行比较,以查找哪个应用程序/进程已退出。 缺点:需要不断轮询,会占用CPU时间。

2)为 WM_CLOSE 消息设置全局挂钩:使用此功能,当任何应用程序通过标题栏上的关闭按钮关闭时,我将能够收到通知

坏处: (-)并非所有应用程序都会生成 WM_CLOSE 消息(例如:Total Video Player Exe) (-)如果通过“退出”菜单或按钮(例如文件->退出)关闭应用程序,我无法捕获该消息

还有其他我错过的更好的方法吗?请指教。


  1. 使用 PSAPI 获取 PID 列表。
  2. 然后使用以下命令获取每个进程的句柄打开进程().
  3. Use 等待多个对象()当进程之一退出时发出信号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win32:获取其他应用程序关闭/退出的消息通知 的相关文章

  • C++串口问题

    我在 Visual Studio 上使用 C 连接到任何串行端口 想要与 Arduino 交换 时遇到问题 我正在使用串行类 http www arduino cc playground Interfacing CPPWindows在 Ar
  • Windows下Kafka托管在Docker中删除主题时出现异常

    我在 Windows 的 Docker 中托管 Kafka 威斯迈斯特 卡夫卡 https hub docker com r wurstmeister kafka 使用 docker 镜像 Kafka 数据存储在本地 Windows 文件夹
  • C# 4.0 动态对象和 WinAPI 接口,如 IShellItem(无需在 C# 源代码中定义它们)

    是否可以 使用 C 4 0 中的新动态关键字 使用接口 如 IShellItem 或其他 WinAPI 接口 而无需在 C 源代码中定义它们 或者至少不定义接口成员 我正在尝试类似的事情 const string IShellItemGui
  • 32 位 OpenFileDialog --> 64 位 System32?

    在 32 位程序中 如何让打开 保存文件对话框显示 64 位系统的 System32 文件夹中的文件 Wow64DisableWow64FsRedirection不起作用 因为由于某种原因它不适用于对话框 我猜是因为它位于不同的线程上 当然
  • 在 Windows 中从文件名获取驱动器号

    是否有 Windows API 函数可以从 Windows 路径中提取驱动器号 例如 U path to file txt U path to file txt 在正确整理的同时 relative path to file txt alte
  • 如何让 git 和 copSSH 在正确的目录中查找密钥?

    我刚刚安装了 Windows 版 copSSH 当我启动它时 我得到一个目录C copSSH home Nick ssh其中有我的酒吧和私钥 当我通过 Cygwin bash 窗口访问此目录时 使用 ssh 用户 主机 我很高兴地登录了 但
  • 支持 ARM 上的 Windows 10 桌面应用程序 - MFC 和 COM 以及 OPOS 可以工作吗?

    我试图了解将在 x86 Windows 10 上运行的 C MFC 应用程序移植到具有 Qualcomm Snapdragon 处理器的 ARM Windows 10 设备的障碍 32位应用程序具有以下特点 MFC 与 C 用于用户界面 C
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 如何更新 C++ dll 而无需将 exe 与 lib 文件重新链接?

    首先 我指的是 Windows 环境和 VC 编译器 我想要做的是重建 Vc dll 并保持与已链接到 lib 的 exe 的兼容性 而无需重建 exe 或使用 LoadLibrary 动态加载 dll 换句话说 有没有办法向 dll 添加
  • 如何更改选项卡控件的名称

    我在 C WinForms 应用程序中使用选项卡控件 我想更改选项卡的标题 默认情况下它们是 tabPage1 tabPage2 等 一种无需代码即可实现的懒惰方法 选择选项卡控件 Go to properties use F4 to do
  • 如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

    如何在 Windows 上关闭 tcp v4 和 tcp v6 连接 我不想终止具有开放连接的整个进程 因为这显然会将其他人踢出该进程 我需要从一个单独的进程执行此操作 因此无法访问套接字句柄等 我正在使用 Windows API 来获取
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 如何在 C++ 中急于提交分配的内存?

    总体情况 带宽 CPU 使用率和 GPU 使用率都极其密集的应用程序需要每秒从一个 GPU 向另一个 GPU 传输约 10 15GB 的数据 它使用 DX11 API 来访问 GPU 因此上传到 GPU 只能在每次上传都需要映射的缓冲区中进
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 使用命名互斥体的存在作为指示符是个好主意吗?

    我使用命名互斥体来检测应用程序的其他实例并相应地退出 并发现有两种方法可以执行此操作 创建互斥锁 忽略它是否已经存在的指示 尝试获得它 使用获取成功 失败的事实 创建互斥锁 使用指示是否已经存在 我无法决定是否获取互斥锁 并在退出时释放 一
  • 将 char[] 转换为 LPCWSTR

    谁能帮我纠正这个代码 char szBuff 64 sprintf szBuff p m hWnd MessageBox NULL szBuff L Test print handler MB OK 错误是 它无法将第二个参数转换为 LPC
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 如何使用来自 Microsoft-Windows-NDIS-PacketCapture 提供程序的实时 ETW 事件?

    更大的问题是一般如何使用实时 ETW 网络堆栈事件 但我特别感兴趣Microsoft Windows NDIS PacketCapture 提供程序 所有其他网络堆栈提供程序都部分工作 但 NDIS PacketCapture NDIS P
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐