本文主要是介绍通过SendMessageTimeOut判断一个窗口是否僵死或者被挂起。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
通过SendMessageTimeOut判断一个窗口是否僵死或者被挂起。
代码示例
DWORD_PTR dwResult = 0;
LRESULT lr = ::SendMessageTimeout(g_hWin, WM_NULL, 0, 0, SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
if (lr)
{ // 还可以响应
}
else
{ // 已经停止响应了(俗话说的窗口挂死了)
}
LRESULT SendMessageTimeout(
HWND hWnd, // 指定接收消息的窗口 UINT Msg, // 发送的消息 WPARAM wParam, // 消息wParam参数 LPARAM lParam, // 消息lParam参数 UINT fuFlags, // 消息发送方式 UINT uTimeout, // 消息超时值 LPDWORD lpdwResult // 异步调用返回参数 );
函数返回值:成功返回非0否则返回0,成功代表指定窗口成功接收消息,否则,消息接收失败,指定窗口僵死。
发送方式:
SMTO_ABORTIFHUNG 如果接受进程处于挂起状态,那么此函数将直接返回,超时值无效。
SMTO_BLOCK 以阻塞方式运行
SMTO_NORMAL 等待函数返回请安,线程可以正常处理其他请求
SMTO_NOTIMEOUTIFNOTHUNG 如果接受现成没有挂起,知道超时值,函数才返回
这篇关于通过SendMessageTimeOut判断一个窗口是否僵死或者被挂起。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!