返回信息流我要在两个资源管理窗口之间进行文件的拖拽,或者复制,粘贴,我想知道文件的源路径是什么,应该要勾住哪个API啊,试了createfile copyfileA/W copyfileExA/W 都不行,用的是detours.
或者能不能知道 hook 哪个消息啊,一开始我以为是wm_dropfiles,但是用spy++看了看好像没看到有这个消息,发现在文件进行拖动时有个WM_PARENTNOTIFY消息
这是一条镜像帖。来源:北邮人论坛 / cpp / #71888同步于 2013/6/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
在资源管理器窗口之间文件拖拽应该hook 哪个API啊
sdt0966
2013/6/18镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
表示鸭梨很大...
通过HOOK做起来有些不对路,如果非要HOOK,应该是对IDropTarget接口里的Drop做HOOK
Shell允许接口ICopyHook来做这件事,,可以拿到原路径,参照http://bbs.pediy.com/showthread.php?t=161282
如果只是想做文件监控,应该用FindFirstChangeNotification; ...
或者ReadDirectoryChanges,具体可以参照MSDN
【 在 jonnyyue 的大作中提到: 】
: 表示鸭梨很大...
: 通过HOOK做起来有些不对路,如果非要HOOK,应该是对IDropTarget接口里的Drop做HOOK
: Shell允许接口ICopyHook来做这件事,,可以拿到原路径,参照http://bbs.pediy.com/showthread.php?t=161282
: ...................
ReadDirectoryChanges 这个只能监控你目录是否发生改变,比如文件的新建,修改,重命名等,但是不能知道这个新增加的文件是从哪个目录来的。
ICopyHook貌似只能对文件夹进行监控,而且有的情况监测不到,比如在刻录光盘时,假如要刻录D:\TEST文件夹到光盘上,这时候系统会自动把test这个文件夹复制到C盘下的一个隐藏文件夹下,这种情况的文件复制,ICopyHook好像也监测不到。
你的做法从根本上就有问题~正确的分析顺序应该是先扫你要监听的进程的导入表~
把导入表里所有涉及文件读写的函数都hook了~不可能监听不到的~
【 在 sdt0966 的大作中提到: 】
: 我要在两个资源管理窗口之间进行文件的拖拽,或者复制,粘贴,我想知道文件的源路径是什么,应该要勾住哪个API啊,试了createfile copyfileA/W copyfileExA/W 都不行,用的是detours.
: 或者能不能知道 hook 哪个消息啊,一开始我以为是wm_dropfiles,但是用spy++看了看好像没看到有这个消息,发现在文件进行拖动时有个WM_PARENTNOTIFY消息
刚刚在XP下看了一下SHFileOperationW 拖动和复制都能够断下来
堆栈信息:
035EF86C 7D6AD253 返回到 shell32.7D6AD253 来自 shell32.SHFileOperationW
035EF870 035EF89C ---->指向如下的结构
035EF89C 00010092 ->HWND
035EF8A0 00000001 ->UINT
035EF8A4 00156D68 UNICODE "C:\Program Files\FFI\FFI.exe"
035EF8A8 035EFAD0 UNICODE "C:\Documents and Settings\Administrator\"
...
能够hook createfileA/W,之前是因为少了一个dll在环境变量下。
就是出来的信息太多了,好多都是没有用的文件,自己还得过滤。
我再试试SHFileOperationW