大picuture:我试图注入我自己的包装探险家的拖放n下降。我的代码被注入到资源管理器中,我尝试用我自己的替换掉目标。挂钩资源管理器拖放失败
为了做到这一点我做的:
- 找到所有IE窗口(使用EnumWindows的,并检查每个窗口过程协会)。
- 对于我运行下述(什么也不做)代码中的每个窗口:
*下降目标= lpDT(*下降目标)GetProp(hwnds [I]中,L “OleDropTargetInterface”); //获得现有放置目标
HRESULT res1 = :: RevokeDragDrop(hwnds [i]); //撤销现有放置目标
HRESULT res2 = :: RegisterDragDrop(hwnds [i],lpDT); //并重新注册放置目标
现在,代码不会更改放置目标。我只是取消注册并重新注册同一个目标。
在所有资源管理器窗口上运行后,我得到res1 ==“应用程序调用了一个接口,该接口被编组为不同的线程。我发现每一个窗口。
如果我忽略错误(仅用于测试),并继续进行替换,那么当前浏览器将停止拖动桌面上的文件(仅用于更改图标位置)。顺便说一句,令人惊讶的是,在两个不同文件夹之间拖动文件仍然有效。我的代码是从一个资源管理器线程(注入资源管理器)运行。
有没有办法解决这个问题?