Python FindWindowEx不';找不到通过远程桌面连接显示的MessageBox
我们有一个构建机器,在它上面我们每天构建并在我们开发的应用程序上执行测试。问题是一些测试失败了,因为我们的一些可执行文件正在崩溃。如果它们能正常崩溃,那只是一次失败的测试 但是,相反,他们失败了,弹出窗口阻止他们完成。它们将在一段确定的时间后被杀死(通常为5-10分钟)。我们通过创建一个“看门狗”来解决这个问题,该看门狗定期检查弹出窗口并在发现时关闭它们。用于检查的python代码如下所示:Python FindWindowEx不';找不到通过远程桌面连接显示的MessageBox,python,winapi,pywin32,findwindowex,Python,Winapi,Pywin32,Findwindowex,我们有一个构建机器,在它上面我们每天构建并在我们开发的应用程序上执行测试。问题是一些测试失败了,因为我们的一些可执行文件正在崩溃。如果它们能正常崩溃,那只是一次失败的测试 但是,相反,他们失败了,弹出窗口阻止他们完成。它们将在一段确定的时间后被杀死(通常为5-10分钟)。我们通过创建一个“看门狗”来解决这个问题,该看门狗定期检查弹出窗口并在发现时关闭它们。用于检查的python代码如下所示: def CheckGenericPopupByClassName(hwnd,className):
def CheckGenericPopupByClassName(hwnd,className):
# pass None for desktop popups
hwndPopup = None
hwndFirst = None
consecutiveExceptionCount = 0
# check for popups on Desktop
while True:
try:
hwndPopup = win32gui.FindWindowEx(hwnd, hwndPopup, className, None) # Check with Spy++ for class name
except Exception as e:
print("CheckGenericPopupByClassName exception:"+str(e))
hwndPopup = hwndFirst = None
consecutiveExceptionCount = consecutiveExceptionCount + 1
if consecutiveExceptionCount > 5:
return
continue
consecutiveExceptionCount = 0
if hwndPopup is None or hwndPopup is 0 or hwndPopup is hwndFirst:
break
if hwndFirst is None:
hwndFirst = hwndPopup
HandleGenericPopup(hwndPopup) # this closes the popup
问题在于,MessageBox
位于远程桌面连接登录的上方,并且以前的方法找不到它。在我登录到远程桌面连接后,会通过定期调用的函数找到弹出窗口
MessageBox来自csrss.exe(我在Process Explorer中看到过),包含以下文本:
“XXXXX.exe-应用程序错误”
“在的引用内存中的指令。无法读取内存。”
单击“确定”终止程序
单击“取消”调试程序
我可以这样做:
但是我想知道为什么FindWindowEx
在这种情况下找不到MessageBox。你知道我该怎么做才能找到那个邮箱吗
谢谢
稍后编辑:
可以找到禁用弹出窗口的解决方案。我选择避免显示弹出窗口
我用过。
FindWindow
是错误的工具。改用。