elva

CFileDialog 异常退出的问题

很多人遇到这个问题,终于找到了原因。
两行简单的代码:

CFileDialog dlg(true);
    dlg.DoModal();

第一次随便选择一个文件,第二次选择桌面的一个.txt文件,当鼠标移动到这个txt文件的时候,程序就挂了。怀疑是 微软的问题?

换api操作,照样挂。

换记事本,挂。

Windbg跟踪,找不到哪个模块,程序最后崩溃在shell32.dll,检查进程的dll模块,最后终于找到是Adobe的pdfshell.dll引起的。删除掉或者regsvr32 /u 卸载就可以了。水平有限,不能跟进那个dll去检查了。


pdf版本7.0.8.0
系统xp sp2

posted on 2008-06-18 11:52 叶子 阅读(4245) 评论(6)  编辑 收藏 引用 所属分类: 技术研究

Feedback

# re: CFileDialog 异常退出的问题 2008-06-18 16:30 梦在天涯

这样已经很厉害了哦!  回复  更多评论   

# re: CFileDialog 异常退出的问题 2008-06-19 12:01 pund

怎么跟踪的呢?  回复  更多评论   

# re: CFileDialog 异常退出的问题 2008-06-19 13:46 vincen

??能说下是怎么操作挂的么,我试了一下,没有重现你说的那种情况。  回复  更多评论   

# re: CFileDialog 异常退出的问题 2008-06-23 09:38 叶子

@pund
先是想到是不是钩子有问题,因为当鼠标移动到文件的时候崩溃,后来测试了用键盘选择,还是一样崩溃,后来监视一下程序运行的时候加载的dll,发现当出现了打开文件对话框的时候,pdfshell.dll会插入进去,崩溃的时候被卸载了,于是改掉他,确定是这个shell扩展的问题。@pund
  回复  更多评论   

# re: CFileDialog 异常退出的问题 2008-06-23 09:41 叶子

@vincen
第一次随便选择一个文件,第二次选择桌面的一个.txt扩展名的文件,两次不要选择同样的文件,最多第三次的时候就会崩溃。txt文件必须是桌面的,其他路径的没有问题。
有问题的pdf版本。。。  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理