为了保护您的计算机,windows已经关闭了此程序

heizu 2009-08-06 02:44:40
我做了一个屏幕取词软件,当在资源管理器中左右快速移动主窗口时,资源管理器不能正常刷新,一片白,好像死机了似的,同时,会弹出DEP保护的提示框:为了保护您的计算机,windows已经关闭了此程序,请问哪里出了问题,是不是钩子程序有问题啊?
...全文
970 点赞 收藏 17
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
heizu 2009-08-10
[Quote=引用 15 楼 tr0j4n 的回复:]
你这是个做什么的钩子呢
[/Quote]

设置了一个鼠标全局钩子,算法网上大致都有的说
回复
heizu 2009-08-10
[Quote=引用 14 楼 cnzdgs 的回复:]
虽然你的程序没有多线程,但你的程序是注入到别的进程里面执行的,explorer.exe肯定是多线程的。
[/Quote]

有道理,呵呵,那我试试双机调试
回复
MoXiaoRab 2009-08-08
你这是个做什么的钩子呢
回复
cnzdgs 2009-08-07
虽然你的程序没有多线程,但你的程序是注入到别的进程里面执行的,explorer.exe肯定是多线程的。
回复
heizu 2009-08-07
[Quote=引用 11 楼 cnzdgs 的回复:]
注意多线程同步的问题。
[/Quote]

恩,昨天晚上我考虑到了这个问题了,不过我程序中没有用到多线程,可这给我提供了一种思路:这个错误应该是我挂上钩子函数以后,等待屏幕重绘,等待时间是200ms,200ms之后摘取钩子函数,给主窗口发送取词成功消息,并从缓冲区取数据,我想在这等待的200ms内,如果你使某个窗口失效引起全屏重绘,就会仍然执行我的钩子程序,这样就可能导致重回失败(因为我的钩子程序执行了大量的字符串处理),我正在按照这个思路改,不知道方向对不对.............
回复
zhengq06 2009-08-07
GZ
回复
cnzdgs 2009-08-06
注意多线程同步的问题。
回复
heizu 2009-08-06
奥,对了,还有一个错误签名如下:
错误签名:
AppName: explorer.exe AppVer: 6.0.2900.2180 ModName: gdi32.dll
ModVer: 5.9.3.951 Offset: 000033ca


各位大大看看是什么问题啊,谢谢了,多提供一点思路......
回复
heizu 2009-08-06
[Quote=引用 7 楼 gyk120 的回复:]
安装一个虚拟机,然后利用WinDBG调试这个虚拟机,网上有教程可以参考,另外可以检查下有没有消息死锁
[/Quote]

恩,我查查这方面的资料
回复
heizu 2009-08-06
[Quote=引用 6 楼 gyk120 的回复:]
解决这种问题,可以调试,看看哪里调用了系统的内核API或者消息,再就是缓冲区溢出问题。或者关闭DEP,或者让DEP为这个程序设置一个例外
[/Quote]

恩,谢谢啊,我也就钩子程序调用了系统api,其他的都没有,我想是钩子程序有问题,但是我不知道怎么调试,也不知道该调试什么啊
回复
gyk120 2009-08-06
安装一个虚拟机,然后利用WinDBG调试这个虚拟机,网上有教程可以参考,另外可以检查下有没有消息死锁
回复
gyk120 2009-08-06
解决这种问题,可以调试,看看哪里调用了系统的内核API或者消息,再就是缓冲区溢出问题。或者关闭DEP,或者让DEP为这个程序设置一个例外
回复
heizu 2009-08-06
[Quote=引用 3 楼 gyk120 的回复:]
DEP对钩子应该管的比较宽才对……
这种情况类似于死机,建议双机WinDBG调试
[/Quote]

建议“双机WinDBG调试”,怎么调试啊,呵呵,我没有听说过.....
回复
heizu 2009-08-06
[Quote=引用 1 楼 socoola 的回复:]
可能是你某个操作一直没有退出
[/Quote]

您的意思是我的钩子程序有问题么?没有恢复系统调用啊。
回复
gyk120 2009-08-06
DEP对钩子应该管的比较宽才对……
这种情况类似于死机,建议双机WinDBG调试
回复
wangk 2009-08-06
应该是,建议双机调试(虚拟机)这种图形处理。
回复
socoola 2009-08-06
可能是你某个操作一直没有退出
回复
发动态
发帖子
硬件/系统
创建于2007-09-28

2590

社区成员

VC/MFC 硬件/系统
申请成为版主
社区公告
暂无公告