A thread should not use IsWindow for a window that it did not create because the window could be destroyed after this function was called. Further, because window handles are recycled the handle could even point to a different window. 所以最好还是在使用时再用FindWindow,或者如果是有标题的窗口,用之前就用GetWindowText得到标题来判断是否为你要的窗口
用API 就算句柄失效 也只是返回0 操作没有成功 加个判断就可以了
这种情况发生的可能性有多大?如果概率很低的话,我就省点事就用IsWindow(HWND hWnd)了
HWND hWnd // handle to window
);BOOL GetWindowRect( HWND hWnd,
LPRECT lpRect
);等等,不止这些。如果执行函数失败,马上用GetLastError()判断错误代码是不是等于ERROR_INVALID_WINDOW_HANDLE
,如果是就里窗口句柄无效了。
我的程序是获取句柄以后,然后得到个内存地址,对内存地址中存放的内容进行读取的,这样执行函数失败程序就出错了。而读内存这个步骤是长时间执行的,而如果我在每次读内存之前使用FindWindow的话,又有别的问题:我想要读取内存的窗口开了非常多个。如果检查的话挺麻烦的。
不过也不是很有效
不过也不是很有效