首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FindWindowEx没有发现MessageBox出现在远程桌面连接上

FindWindowEx没有发现MessageBox出现在远程桌面连接上
EN

Stack Overflow用户
提问于 2015-05-08 07:31:44
回答 1查看 253关注 0票数 2

我们有一个构建机器,在我们开发的应用程序上,我们每天进行构建和执行测试。问题是一些测试失败了,因为我们的一些可执行文件正在崩溃。如果它们正常崩溃,那只是一个失败的测试。

但相反,他们失败了弹出阻止他们完成。他们会在确定的时间后被杀死(通常5-10分钟)。我们通过创建一个定期检查弹出窗口并在发现时关闭弹出窗口的“监视狗”来克服这个问题。用于检查的python代码如下:

代码语言:javascript
复制
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中看到了这种情况),并具有以下文本:

"XXXXX.exe -应用程序错误“

“<...>的指令引用了<...>的内存。内存无法读取。”

单击OK以终止程序

单击“取消”调试程序

我可以这么做:“应用程序错误”对话框可以禁用吗?

但我想知道为什么FindWindowEx在这种情况下找不到MessageBox。我该怎么做才能找到那个MessageBox呢?

谢谢!

稍后编辑:禁用弹出窗口的解决方案可以找到这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-30 19:15:53

我选择了避免显示弹出窗口。

我用的是Microsoft站点的解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30118260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档