这个问题我已经郁闷一个礼拜了:-(,具体情况如下:
1.我需要截获用户任何时候对任意文件的copy paste操作,并把其记录成xml文档。
现在通过截获WM_COPY,WM_PASTE消息和OleSetClipBoard OleGetClipBoard SetClipboardData 
GetClipboardData等API基本已经实现截获用户的任何copy paste操作,但分析后发现截获的信息远比
用户的操作要多,例如:打开一个word文档时(现在用户还未进行任何操作)就截获了许多上面4个API
调用,而且由于word等office软件实现了自己的剪贴板,导致用户copy任何文件时word都会调用GetClipboardData等得到系统剪贴板的东西来填充自己的简帖版。
请问如何才能过滤掉这些伪操作信息,使截获的信息和用户操作更好的对应起来。
2.我有一个进程的ID和主窗口的HWND,如何才能得到他所打开的文件的绝对路径我分不多,尽量给了:)

解决方案 »

  1.   

    1 可以通过判断消息的来源进程来进行过滤2 GetModuleFileName
      

  2.   

    你没看懂我的问题吧,2个回答都不是我要的:(
    1。我要截获所有进程的COPY PASTE消息,怎么能通过来源进程过虑?
    2。GetModuleFileName是得到应用程序名,不是得到它所打开的文档绝对路径请路过的高手尽量详细回答一下
      

  3.   

    GetModuleFileName可以获得本进程的绝对路径,但是对其他进程是否可以这么用,不知道
      

  4.   

    GetModuleFileName获得本进程绝对路径
    其他进程不可一
      

  5.   

    大家不会都误会了吧
    我的意思是能得到进程所打开的文件的绝对路径,而不是进程exe文件的绝对路径
    比如word打开了aaa.doc,如何在知道word的绝对路径和进程id和主窗口句柄的前提下,
    得到aaa.doc的绝对路径
    大侠们,救命啊。这个是偶在csdn的处女贴,居然就没人能有一个满意的答复555
      

  6.   

    word打开了aaa.doc,如何在知道word的绝对路径和进程id和主窗口句柄的前提下,
    得到aaa.doc的绝对路径
    ~~~~这个没什么关系吧,能得到?
      

  7.   

    如果知道这些都没用的话,需要那些东西呢.总之目的就是得到aaa.doc的绝对路径
    大家随便讨论吧,这个贴发了这么久都没找到答案:(
    现在的项目我只是得到了文件名,而不是绝对路径
      

  8.   

    发了一个月了 haha
    真的没人做过?
      

  9.   

    1.用SetClipboardViewer监视剪贴板
    2.监视快捷健,一般是ctrl+c,ctrl+v
    如果程序自己实现剪贴板的话就不太好弄了。不同程序不同的实现方法,要具体分析了。
      

  10.   

    eunt,如果用户选择菜单里面的copy,paste不就抓不到了吗
    SetClipboardViewer只能监视到copy操作吧
    这个月实在是见识了office的那一套东西是多么bt了,很多别的程序能用的方法对他们都无效:(((
      

  11.   

    ICopyHook
    不能拦截,但是当有操作的时候他可以通知你