通过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    如果接受现成没有挂起,知道超时值,函数才返回




  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值