shell扩展的调试问题 用shell扩展做了一个右键菜单,这个右键菜单只是对文本文件(*.txt)有效.用ATL做的问题:我怎么样对此ATL程序进行调试? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 跟你说个小办法吧,在你想端的地方加上_asm int 3然后程序运行到那里就出错了,然后后问你选用什么调试器调试,VC啊,OllyDbg什么的都可以了。还可以看到源码。 1.因为这个是Shell扩展的Com程序,编译出来是DLL2.而这个Dll只有在右键单击文本文件时,才执行3.所以就不知道怎么调试了! healer_kx(甘草(DotNeting)):所以这个Shell扩展的DLL程序我就不知道用什么调试器调试了! 这个办法是无所谓exe和dll的。 呵呵__asm int 3其实你写ASSERT(FALSE);也是一样的。程序会在这个地方非法中断的。然后就会弹出那个界面:_______________________________________________________xxx.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉调试 发送错误报告 不发送————————————————————————————————调试吧~ debug里选attach to process,attach到explorer.exe上即可 你可以这样,在dll文件所在的目录下建立一个文件run.txt,里面的内容是:regsvr32 XX.dll,XX.dll表示你的dll文件,它前面有一个空格。然后将run.txt更名文run.bat,运行这个批处理文件即可。然后你点下鼠标右键,应该就可以看见shell扩展的效果了。 F5 选择 一个exe 程序,让这个exe 程序 给各文件选择的对话框,在这里 right mouse down text 文件 , 1、Shell 扩展是被 Explorer 调用起来的,所以,首先要把你的工程的调式进程设置为 Explorer.exe。2、由于当 Shell 扩展被 Explorer 调用后, 它会在内存中呆上一段时间, 这会使你无法重新编译并生成Shell 扩展 DLL 文件。对于 Windows 9x,要让 Explorer 更迅速地卸载 Shell 扩展执行文件,需要创建如下注册表项:HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDLL并将其值设为 "1"。而在 Windows NT/2000上, 你可以找到如下键:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer并创建一个名为 DesktopProcess 的 DWORD 值,将该值设置为 1。这会使桌面和任务栏运行在一个进程中, 而其他每一个 Explorer 窗口都运行在它各自的一个进程内. 也就是说,你可以在单个的 Explorer 窗口内进行调试, 而后只要你关闭该窗口,你的 DLL 就会被马上卸载, 这就避免了因为 DLL 正被 Windows 使用而无法替换更新。而如果不幸出现这种情况,你就不得不注销登录后再重新登录进 Windows 从而强制卸载使用中的 Shell 扩展 DLL。3、现在,正常在 DLL 工程中设置断点,点击调试按钮,待到 Explorer 窗口出现时,找到某个 TXT 文件,右击即可。 debug里选attach to process,attach到explorer.exe上即可 资源释放疑惑! SetDlgItemText 是不是有些字体GDI+无法输出? 想学网页编程 这个问题问了好长时间没有人回答,请大家进来帮忙解决!!!! 程序退出后,任务管理器中显示程序仍在活动,请问如何在程序中编码使得在退出时避免这种情况? 心情不好,散分了 ●你们天天都吵着工作性质特别,没时间泡MM,你们来看看人家是怎么用电脑泡的~~~ 哈哈 请教:关于测试对象是否存在的问题? 有关文件路径的传递的弱问题,很郁闷~ 跪求socket疑难阿 好几天的问题没能解决!!!!!没钱了也要发帖~~~!回帖的以后再给分!!
VC啊,OllyDbg什么的都可以了。还可以看到源码。
2.而这个Dll只有在右键单击文本文件时,才执行
3.所以就不知道怎么调试了!
所以这个Shell扩展的DLL程序我就不知道用什么调试器调试了!
__asm int 3
其实你写ASSERT(FALSE);也是一样的。程序会在这个地方非法中断的。然后就会弹出那个界面:
_______________________________________________________
xxx.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉调试 发送错误报告 不发送
————————————————————————————————调试吧~
里面的内容是:regsvr32 XX.dll,XX.dll表示你的dll文件,它前面有一个空格。
然后将run.txt更名文run.bat,运行这个批处理文件即可。
然后你点下鼠标右键,应该就可以看见shell扩展的效果了。
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDLL
并将其值设为 "1"。而在 Windows NT/2000上, 你可以找到如下键:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
并创建一个名为 DesktopProcess 的 DWORD 值,将该值设置为 1。这会使桌面和任务栏运行在一个进程中, 而其他每一个 Explorer 窗口都运行在它各自的一个进程内. 也就是说,你可以在单个的 Explorer 窗口内进行调试, 而后只要你关闭该窗口,你的 DLL 就会被马上卸载, 这就避免了因为 DLL 正被 Windows 使用而无法替换更新。而如果不幸出现这种情况,你就不得不注销登录后再重新登录进 Windows 从而强制卸载使用中的 Shell 扩展 DLL。3、现在,正常在 DLL 工程中设置断点,点击调试按钮,待到 Explorer 窗口出现时,找到某个 TXT 文件,右击即可。