我想在IE的 文件->另存为 对话框打开时,用hook作些事情。
但是,SetWindowHookEx中,idHook设为WH_MSGFILTER,WH_SHELL好像都检查不到
网页保存对话框的打开。请高人指点,thanks。

解决方案 »

  1.   

    WH_CALLWNDPROC截获WM_SETFOCUS,然后判断一下主窗口是不是“另存为”
      

  2.   

    好像不行,
    我是在一个Dialog Base MFC程序的 OnInitDialog中调用SetWindowHookEx的,
    似乎WH_CALLWNDPROC只对该我自己的对话框上的事件感兴趣,而其他程序中发生
    的事件一概不理。
      

  3.   

    怎么算全局的,我的钩子是单独作成了一个dll。
    设置钩子代码如下:
    HOOKPROC hkprcSysMsg; 
    static HINSTANCE hinstDLL; 
    static HHOOK hhookSysMsg; 
    CString dllpath="E:\\MyProjects\\Saver\\Hook\\Debug\\Hook.dll";
    hinstDLL = LoadLibrary(dllpath); 
    hkprcSysMsg = (HOOKPROC)GetProcAddress(hinstDLL, "ActiveWinProc"); 
    hhookSysMsg = SetWindowsHookEx(WH_SYSMSGFILTER,hkprcSysMsg,hinstDLL,0);
      

  4.   

    现在dll里什么都没干,只是想看看nCode而已。LRESULT CALLBACK ActiveWinProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    static int i=0;

    TRACE("---------\n");
    TRACE("%d, %d \n",nCode,i++);
    }
      

  5.   

    可能是你的dll中没有设置共享数据段,你查查以前的帖子吧,关于钩子的多的是。
      

  6.   

    SetWindowsHookEx要放在DLL中,否则Dll有什么用处?
    Hook都要放在DLL中,MSDN有说!—————————————————————————————————
    ┏━★━━◆━━★━┓ 
    ♂欢|◢CSDN◣|使♂        ▲自由保存帖子,浏览,关注检测
    ┃迎|◥论坛助手◤|用┃        ▲完善的CSDN客户端工具
    ┗━☆━━◇━━━☆┛       ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
    http://www.csdn.net/expert/topic/573/573604.xml
    http://www.chinaok.net/csdn/csdn.zip
      

  7.   

    MSDN上说SetWindowsHookEx放在dll里or dll外都可以:
    An [[[alternative]]] method for installing a global hook procedure is to provide an installation function in the DLL, along with the hook procedure.