如何检测我的Windows应用程序是否已经结束
How to detect if my Windows application has ended?
基本上,标题所说的我需要检测到我的程序何时结束,例如某人在任务管理器或其他内容中单击最终任务。谁能将我指向以例子或其他方式处理此事的某种事件?感谢给出的任何帮助
您需要打开此过程。这样,您将检索其手柄。之后,您可以简单地等待此手柄。
HANDLE h = OpenProcess(....);
WaitForSingleObject(h);
在许多方面,过程和线程的操作看起来像Windows事件手柄。此过程或线程完成后,它们就会发出信号。
这取决于您的应用程序的终止方式以及它是什么类型的应用程序。
用于使用UI的应用程序:
- 如果用户在任务管理器中单击"结束任务",您实际上将接收WM_DESTROY甚至WM_CLOSE消息到您的消息处理程序。
- 如果用户只需单击应用程序的X按钮,显然上述也适用。
- 如果用户注销或关闭PC,您将收到wm_queryendsession和wm_endsession消息。
对于控制台应用程序,您可以使用setConsolectrlhandler函数通知大多数应用程序终止情况(我没有任何经验,因此无法提供很多详细信息)。
对于服务,您可以以几乎相同的方式使用registerservicectrlhandler函数。
对于所有类型的应用程序,如果应用程序通过终止程序函数强行终止了该应用程序,则无法通知应用程序:
如果一个过程通过终止程序终止,则该过程的所有线程将立即终止,而无需运行其他代码。这意味着线程不会在终止处理程序块中执行代码。另外,没有任何附着的DLL通知该过程已分离。
相关文章:
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 是否可以编译 Gtk+ 应用程序以同时在 Gtk 2 和 3 上运行
- 如何使用C++确定应用程序是否已在窗口中启动?
- 是否可以从控制台应用程序使用 C++/WinRT 创建窗口?
- 如何查询以确定我的 MacOS/X 应用程序是否处于应用程序午睡模式?
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- 从头开始为应用程序创建 docker 映像是否有意义?
- 是否可以将键盘输入绑定到 Win32 中的单个应用程序?
- 确定C++应用程序是否作为具有旧版支持的 UWP 应用运行
- 是否可以将不同的编译器嵌入到我的应用程序中?
- Windows 和 Android 应用程序是否需要 SSL?
- GCP 或 AWS 是否支持 C++ 和 GUI 应用程序开发?
- 使用全局 IP 地址时,C++ winsock 2 应用程序中的代码是否必须更改?
- 根据应用程序是否已自动化显示不同的 QML 文件
- 如何检查应用程序是否安装了 jni?
- 是否可以在QT GUI应用程序中处理事件时播放加载动画指示器?
- 是否可以将 VBA 编程环境添加到我的C++应用程序?
- 使用 IPC 共享内存的应用程序是否可以访问彼此的代码?
- 是否可以使用C /WinRT创建Windows Service应用程序
- 如何检查用户是否已打开应用程序