大家看看这个FindWindow为什么老是为真
本帖最后由 xtayaitak 于 2011-08-29 11:35:36 编辑
bool CloseDialog(void)
{
HWND errorMsg1=NULL,errorMsg2=NULL;
errorMsg1=::FindWindow("#32770","QQ对战平台");
if(errorMsg1)//这个if为什么在任何时候都是为真???????????????
{
ShowMessage("找到msg1,正在关闭");
SendMessage(errorMsg1, WM_CLOSE, 0, 0);
Sleep(200);
errorMsg2=::FindWindow("#32770","错误");
if(errorMsg2)
{
ShowMessage("找到msg2,正在关闭");
SendMessage(errorMsg2, WM_CLOSE, 0, 0);
}
return false;
}
else
return true;
}
[解决办法]
因为你找的是“QQ对战平台”,这个是不是就是QQ对战平台的那个大的窗口呀,你只要开着QQ对战平台,这个就会返回真
[解决办法]
1. 楼主用五笔输入法,鉴定完毕。
2. 那个提示框窗口,是一个顶层窗口,用FindWindow可以找到其句柄,但是需要注意,同一时刻,也许存在多个同类名同标题的窗口,所以,如果FindWindow找到有效的句柄,但是又不是你预期的那个窗口,那么可能就是另外的同类名同标题的窗口了。这时,可以通过其他的方式判断到底是不是想要的窗口,比如枚举子窗口,看有没有指定的子窗口存在。