这个似乎不可能的,截获ctrl + c可以,但是软件中复制的动作呢,如何截获如何识别
剪贴板可以通过程序访问,不通过剪贴板的复制呢

解决方案 »

  1.   

    可以这样,因为不管什么操作都是通过调用api完成的,监控那些能够实现复制文件的api应该可以达到效果.至于怎么实现监控api这个就复杂了,你可以搜索一下,是可以实现的,实际上内存泄漏的工具就是监控那些分配内存的api做到的.
      

  2.   

    有一个API叫什么SetViewChange(名字我不记得准确了),可以检测剪贴板,需要的话你自己查去,能够在剪贴板变化的第一时间得到通知
      

  3.   

    检测剪贴板是否有数据,
    MSDN上面API里面的输入那里有详细的介绍。
      

  4.   

    没做过,但是感觉应该用 api hook 。但是如楼上所说,不一定都是文本。可以用 Detours 库 参考:http://www.freewebs.com/wangxinwei/apidetour/APIDetour3.htm
      

  5.   

    用API HOOK,HOOK 拷贝和粘贴操作,就可以咯
      

  6.   

    回复人:qhgary(Gary) ( 五级(中级)) 信誉:100  2007-2-27 16:33:37  得分:0
    ?  可以这样,因为不管什么操作都是通过调用api完成的,监控那些能够实现复制文件的api应该可以达到效果.至于怎么实现监控api这个就复杂了,你可以搜索一下,是可以实现的,实际上内存泄漏的工具就是监控那些分配内存的api做到的.
    -------------------------------------------------
    不管什么操作都是通过读写内存来的,不如对所有的内存操作都作监视好了
      

  7.   

    为什么我的vc++不能够安装msdn啊
      

  8.   

    window已经提供机制了:剪贴板查看器链。一个典型的观察者模式。只要把自己的窗口注册到这个链中,将来只要剪贴板内容有所改变就可以得到通知。然后随你怎么做。http://nipcdll.bokee.com/2552535.html
      

  9.   

    相当同意 shan_ghost() 的思路,具体内容可查看<<windows程序设计>>中的相应章节,另外,剪贴板中的内容类型是可识别的
      

  10.   

    如果是shell的复制操作,那么会有通知的.
      

  11.   

    当一个程序的意图是成为一个剪贴板查看器时必须在WM_CREATE函数中调用SetClipboardViewer()函数,这个函数的返回值是剪贴板查看器链中的上一个剪贴板查看器的窗口句柄,这个窗口句柄应该被保存在一个静态变量当中。同时在调用这个函数以后当前窗口变成了当前剪贴板查看器。
          当剪贴板查看器被结束时,也就是在处理WM_DESTROY消息中我们应该把当前程序从剪贴板查看器链当中删除。方法时调用函数ChangClipboardChain(hWnd,hWndpriview);第二参数是保存前一个剪贴板查看器的静态变量。
          剪贴板查看器将接受到以下这些消息:
    WM_DRAWCLIPBOARD:当剪贴板被改变时操作系统向当前剪贴板查看器发送此消息。如果当前剪贴板查看器不是剪贴板查看器链当中第一个剪贴板查看器那么应该把消息发送给链当中其上面的一个剪贴板查看器。同时根据程序逻辑对程序的显示作相应的更新。
    WM_CHANGCBCHAIN:当剪贴板查看器链中有一个剪贴板查看器被删除那么操作系统就会向当前剪贴板查看器发送此消息;其中wParam参数是被删除的剪贴板查看器的窗口句柄,lParam参数是删除的剪贴板查看器的上一个剪贴板查看器的窗口句柄。处理这个消息时,首先要确定删除的是不是当前剪贴板查看器的上一个剪贴板查看器,如果是,那么要把之前保存前一个剪贴板查看器的静态变量用lParam赋值;如果不是,那么简单的将消息发送给上一个剪贴板查看器。