打开线程实时监听句柄窗口是否关闭
时间: 2023-08-15 14:40:02 浏览: 117
监听进程是否已退出
5星 · 资源好评率100%
可以使用多线程的方式来实现实时监听句柄窗口是否关闭的功能。具体实现方式如下:
```c++
#include <iostream>
#include <windows.h>
using namespace std;
DWORD WINAPI ThreadProc(LPVOID lpParam) {
HWND hwnd = (HWND)lpParam;
while (IsWindow(hwnd)) {
// 窗口仍然有效,可以继续处理
// ...
Sleep(1000); // 每隔1秒检查一次
}
// 窗口已经关闭,可以进行相应处理
// ...
return 0;
}
int main() {
HWND hwnd = FindWindow(NULL, "窗口标题"); // 替换为你要监听的窗口标题
if (hwnd) {
HANDLE hThread = CreateThread(NULL, 0, ThreadProc, hwnd, 0, NULL);
if (hThread) {
// 等待线程结束
WaitForSingleObject(hThread, INFINITE);
// 关闭线程句柄
CloseHandle(hThread);
}
}
return 0;
}
```
该示例代码中,创建了一个新线程ThreadProc来监听指定窗口的状态。在主线程中,使用CreateThread函数创建新线程,并将窗口句柄作为参数传递给新线程。然后等待新线程结束,并关闭线程句柄。
需要注意的是,当一个窗口关闭时,它的消息队列将被清空,因此在新线程中不能使用任何与窗口相关的消息函数(如SendMessage、PostMessage等),否则可能会导致不可预期的结果。
阅读全文