目前做个小程序, 需要监控 PPT的播放翻页情况, 也就是 ppt翻页后 通知主程序, 我用spy++ 看了下,ppt 翻页的时候 有消息, 请问下,如何拦截这个消息? (我目前用的方法 是用线程读取内存数据, 但是 powerpoint是32位的还好,地址都找到了, 如果是64位的 地址还没抓到, 并且不稳定, 所有想从拦截 消息方面入手,)  学习了几个 hook的例子, 都不成功

解决方案 »

  1.   

    取得窗口句柄所在线程的ID,因为SetWindowsHOOK要的参数是线程ID
      

  2.   

    对hook不太懂, 我对着万一的博客中的例子 做全局鼠标钩子 或者键盘钩子 都能拦截, 但是 拦截指定窗体 , 只能拦截本程序, 不能拦截到 ppt的窗体  hook:=setWindowsHookEx(WH_cat,proc,HInstance,0);   或者   hook:=setWindowsHookEx(WH_cat,proc,HInstance,PPPTPid); 都这样,  
      

  3.   

    dll 代码 ,, 求大神指点下, 不进入回调函数function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
    begin
     {
      case wParam of
        WM_MOUSEMOVE   : info := '鼠标位置';
        WM_LBUTTONDOWN : info := '按下';
        WM_LBUTTONUp   : info := '放开';
      end;
      info := Format('%s: %d,%d', [info, PMouseHookStruct(lParam)^.pt.X, PMouseHookStruct(lParam)^.pt.Y]);
      }
      {通过消息把数据传递给指定窗口}
      info:=IntToStr(wParam);
      PostMessage(h, WM_MyMessage, 0, Integer(PChar(info)));  Result := CallNextHookEx(hook, nCode, wParam, lParam);
    end;function SetHook: Boolean; stdcall;
    const
      WH_MOUSE_LL =14;
      var h:HWND; id:Cardinal;
    begin
    //查找到powrpointView窗体句柄
       h:=FindWindow('PPTFrameClass',nil);
       h:=FindWindowEx(h,0,'MDIClient',nil);
       h:=FindWindowEx(h,0,'mdiClass',nil);
       h:=FindWindowEx(h,0,'paneClassDC',nil);
      id:=GetWindowThreadProcessId(h,nil);
      hook := SetWindowsHookEx(WH_CALLWNDPROC, @HookProc, HInstance,id );
      Result := hook <> 0;
    end;
      

  4.   

    用 spy++ 抓取的 消息是   
      

  5.   

    不懂....    如果您方便的化, 能不能写个简单的demo , 万分感谢
      

  6.   

    Hook窗口过程,WH_CALLWNDPROC这个钩子会勾掉所有消息的处理过程
    你也可以直接替换掉窗口过程,拿到处理权限,然后SetWindowLong替换掉窗口过程
      

  7.   

    如果只是监控翻页情况的话,我觉得你可以换个思路,使用OLE编程,直接调用PowerPoint的相应API不就可以了吗,只搞过EXCEL的,对于Powerpoint的操作没搞过
      

  8.   

    或者你在Powerpoint里编写一段VB代码,直接把消息传出来也可以的吧
      

  9.   

    PPT翻页,窗口不变更,仅更换内容(页面)。
      

  10.   


    因为是用户环境不同, ppt版本和文件不用, 无法再ppt中插入vba脚本, 
      

  11.   

    http://download.csdn.net/download/sololie/6271981