一个控制复制粘贴的问题,急! ( 积分: 100 )

  • 主题发起人 主题发起人 UnFireSniper
  • 开始时间 开始时间
U

UnFireSniper

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾们,小弟有个问题,分不多了,请多多赐教阿:<br>现在有加密文件a.doc,b.doc,不加密文件c.doc,都用word打开,<br>要实现如下功能:<br>1、a,b之间的内容可以互相复制粘贴。<br>2、c的内容可以粘贴到a,b中。<br>3、a,b中的内容不能粘贴到c中。<br>请问各位有什么好的想法吗?
 
知道密码不?哪种加密,是Word加密的?<br>这个跟Delphi有关么?
 
是要用delphi控制吗?嘿嘿,听不太明白。
 
是透明加密,就是读到内存后加密和不加密的文件是一样的,<br>不一定要用delphi.&nbsp;c++更好。<br>我有个想法就是要用VXD,但是太烦了。<br>希望大家能给个好的建议。
 
透明加密,没太明白。。。<br>反正内存里面是明文是吧,那你打算怎么用Word打开?
 
这种加密类似NTFS加密,就是在硬盘上是加密的,只有授权用户才能打开,这种能不能正确读取文件内容,应该是在I/O之前做的控制。<br>一旦打开后对应用程序来说就没有加密不加密的概念了。
 
解密都不是你控制的,那你还怎么控制人家复制、粘贴啊,更何况Word也不是你做的
 
有个办法就是hook剪贴板的相关的Api,像getclipboarddata,setclipboarddata&nbsp;等等。<br>但是我能知道剪贴板内容的来源窗口句柄,以及粘贴的目标窗口句柄。<br>但是我不知道这两个窗口所打开的文件是否是要控制的加密文件。<br>ps:加密文件是可以识别的,如果知道了打开的文件路径名称的话。<br>所以现在的问题就是:窗口与其所打开的文件的对应。
 
可以用GetActiveOleObject可以获得刚刚打开的Word对象,问题是没有Word打开的事件。。。似乎有东西可以监视系统所有Ole对象,因为VC本有这样的工具。<br>拿到那个以后想得到文件名就简单了。。。还能得到主窗体的句柄(我看过,似乎不是主窗体的句柄,但帮助里是那么说的)
 
我想用通过VXD做一个监视文件的存取的,然后hook&nbsp;createwindow来做对应,但是这样就有个问题,就是针对不同的编辑窗口都得做,就是穷举,像word的_WwB窗口,以及其他的编辑窗口等等。<br>lake_cx谢谢你的思路,我来看看。
 
难度比较大,你搞定的话分享下
 
后退
顶部