如题,C++中如何截获系统发出的“粘贴”消息,之前想用HOOK勾取WM_PASTE消息的,但貌似粘贴时发送的并不是WM_PASTE,网上说有些paste操作实际不是通过WM_PASTE发送,而是通过WM_COMMAND发送的,现在我想获取这个“粘贴”消息,该怎么做,请各位高手帮帮忙!

解决方案 »

  1.   

    用钩子钩 WM_COMMAND , 然后分析其参数。每个应用程序可能定义不同的命令用于粘贴,这个你就得自己具体问题具体分析。
      

  2.   

    剪贴板消息:
    WM_ASKCBFORMATNAME  
    WM_CHANGECBCHAIN  
    WM_CLEAR  
    WM_COPY  
    WM_CUT  
    WM_DESTROYCLIPBOARD  
    WM_DRAWCLIPBOARD  
    WM_HSCROLLCLIPBOARD  
    WM_PAINTCLIPBOARD  
    WM_PASTE  
    WM_RENDERALLFORMATS  
    WM_RENDERFORMAT  
    WM_SIZECLIPBOARD  
    WM_VSCROLLCLIPBOARD   
     
      

  3.   

    十分感谢王箴同学的帮忙!!在他的帮助下总于调出程序了。总结下有以下几点注意:
    1.如“icansaymyabc”所说,每个应用程序都有自己的复制粘贴命令,实践表明只有在txt中的复制粘贴发送的是WM_COPY和WM_PASTE消息,因此我现在的程序只能捕获到txt文件中的复制粘贴
    2.我是用HOOK 通过勾取WH_CALLWNDPROC获取WM_PASTE消息的,然后发送消息到DLL的客户程序,在客户程序中写该消息的响应函数。这里用WH_GETMESSAGE是捕获不了复制粘贴消息的
    现在的问题是:
    即便是在txt中,若用ctrl v进行粘贴同样是捕捉不到消息的,这是为什么
    如何捕获系统发送的“各种”粘贴消息
    如何判断有效的 ctrl v/粘贴消息,即我可能在txt中复制,然后切换到桌面点粘贴,明显是粘贴不了的,这种情况在程序中如何判断
    请各位高手帮忙解决!