Windows VC++编程问题,如何获取文件粘贴事件,在粘贴事件执行前做一些操作。
我在做一个远控软件,但我想让我的远控软件支持远程复制粘贴,在本地复制后,粘贴到远程桌面,但复制后不想立即传输到远程端电脑,我是希望能本地复制后,更新远端电脑的剪贴板信息,等远端执行粘贴命令时,传输到远程端,然后进行粘贴,不太清楚OLE剪贴板是否能解决我的问题,对OLE剪贴板我还不是很了解。
本人最开始有以下两个计划,但总觉得Hook技术偶尔不是很稳定,希望能有不需要Hook的方法:
1.本地复制,发送到远程端文件列表信息更新剪贴板,然后判断到复制的是文件时,远程端Hook粘贴函数,等粘贴函数执行的时候,发送到控制端粘贴命令,然后发给远程端粘贴。
2.本地复制,发送到远端文件列表信息更新剪贴板,远程端临时创建几个与被复制同名的文件,将剪贴板的信息设置为这几个临时文件,然后Hook住这几个文件的读写函数,等读取这几个文件的时候,通知控制端进行传输,传输完成后继续这几个文件的读取。
本人看过VNC的源码,里面貌似没有文件远程复制粘贴功能,只有文件远程传输功能,但我想直接加入复制粘贴功能,跪求各位大神有没有什么好的方法,尽量不使用Hook进行文件传输,本人监控过TeamViewer的文件复制粘贴,但TV好像是注册了一种剪贴板数据类型,使用OLE剪贴板进行文件粘贴,但具体怎么实现的我不清楚。
用AddClipboardFormatListener,拿C#给你写了一个
完整代码:https://download.csdn.net/download/caozhy/10504161
目前在审核,明天上午可以下载。
其实,楼主的思路是对的,通过hook方式也是完全可以实现你的功能的,你之所以有时候可以,有时候不可以,估计是hook的函数不对,或者代码哪里粗心大意了。既然你不想用hook,那么你的思路通过ole剪切板也是对的,你说的TeamViewer我没有用过,不知道他是怎么实现文件粘贴功能的,在这里给你用ole的方式来实现复制和粘贴,也可以直接拖拽实现文件传输,嗯,本来不想来回答问题了,想想还是算了,回答一下也不会怎么样,希望我的回复被删除之前你能看到,代码我就不贴在这里了,我看上传到哪里给你下载,或者直接发给你吧,至于你说的在QQ上粘贴,我不明白什么意思,是想要类似粘贴在QQ上的功能,还是截获粘贴在QQ上的事件
你只需要监听这个Ole剪贴板,只要本地复制了文件,你发送复制的文件列表信息到远程端,同时通知远程端创建这几个同名文件,至于你需要什么时候开始传输,那完全由你自己控制
如果留邮箱不违规的话,楼主赶紧留邮箱,如果违规那我只有先上传,然后发链接地址到这里来,为什么不直接发链接地址或者贴代码,你也看到了,人气太高,没办法,只要回复了,好多人会在这里顶我,哦,不对,是踩我,我感到好荣幸啊,得到大家的关注,谢谢大家,哈哈
楼主相信我,只要你监听ole剪切板就可以实现你需要的功能,你只是之前思路和处理顺序之类的搞错了,我相信你的能力,你自己好好研究一下,完全可以自己解决的,如果有问题,可以随时跟我交流,这里说明白一点,我不要你的C币,如果你需要源码我可以发给你,保证你完全解决你的问题为止,你这个C币收回去吧,没必要浪费。有一点觉得可笑的是人家用VC写的,对于某某发的链接看都懒得看一眼,居然会说抄袭他的,真实笑到肚子痛,哈哈
这是windows远程桌面的拷贝文件的方式,你可以看到,对于目标计算机来说,就是一个自定义的handler就搞定,并没有用到标准的文件复制