WebKit打破了标准窗口打开/保存对话框

Nip*_*ris 6 c++ winapi qt webkit qwebview

我们的团队正在使用Qt 4.7.4开发复杂的应用程序.我们提供的一个关键功能需要QWebBrowser呈现的HTML + JS内容.

问题是加载一些页面会导致打开/保存对话框中断:

在此输入图像描述

该对话框在交互方面仍然"有效":可以打开文件过滤器组合框,可以输入文件名,但所有这些都是错误的.根本不绘制文件列表和目录树.

我在Qt bug跟踪器和谷歌上找不到关于这个问题的bug报告.我们认为问题是我们项目的本地问题.我们假设某些comctl32.dll内部结构被某人对无效地址的写操作破坏,但我们不知道如何捕获真正的原因.另外值得一提的是,这个问题不会出现在Qt 5.4和任何版本的Windows 8.0以下.不幸的是,我们应该在Qt 4.8上构建下一个版本(项目很大,升级过程需要很长时间).

如何调试这样的问题?应该挂钩哪些内存操作和/或WinAPI调用?任何想法都非常感谢.

工具链是MSVC 9.0(VS 2008)

Nip*_*ris 4

好吧,经过大量的调查,我们发现Windows崩溃的真正原因是Flash插件DLL的加载。

我们发现调试窗口中有关 DLL 加载的消息与中断对话框的时刻之间存在关联。加载 Flash 插件后,对话框立即中断。

为了确保这一点,我们将 Flash DLL ( NPSWF64_*.DLL) 移动到另一个目录,以使 WebKit 无法找到该插件,并且在应用程序重新启动后对话框得到修复。