如何用 SetWindowsHookEx 设置钩子,来检查文件保存对话框的打开? 我想在IE的 文件->另存为 对话框打开时,用hook作些事情。但是,SetWindowHookEx中,idHook设为WH_MSGFILTER,WH_SHELL好像都检查不到网页保存对话框的打开。请高人指点,thanks。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WH_CALLWNDPROC截获WM_SETFOCUS,然后判断一下主窗口是不是“另存为” 好像不行,我是在一个Dialog Base MFC程序的 OnInitDialog中调用SetWindowHookEx的,似乎WH_CALLWNDPROC只对该我自己的对话框上的事件感兴趣,而其他程序中发生的事件一概不理。 怎么算全局的,我的钩子是单独作成了一个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); 现在dll里什么都没干,只是想看看nCode而已。LRESULT CALLBACK ActiveWinProc(int nCode, WPARAM wParam, LPARAM lParam){ static int i=0; TRACE("---------\n"); TRACE("%d, %d \n",nCode,i++);} 可能是你的dll中没有设置共享数据段,你查查以前的帖子吧,关于钩子的多的是。 SetWindowsHookEx要放在DLL中,否则Dll有什么用处?Hook都要放在DLL中,MSDN有说!—————————————————————————————————┏━★━━◆━━★━┓ ♂欢|◢CSDN◣|使♂ ▲自由保存帖子,浏览,关注检测┃迎|◥论坛助手◤|用┃ ▲完善的CSDN客户端工具┗━☆━━◇━━━☆┛ ▲自动添加签名......让你更快,更爽,更方便地上CSDN...http://www.csdn.net/expert/topic/573/573604.xmlhttp://www.chinaok.net/csdn/csdn.zip 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. new一个新的class出来,class名后面要加()吗? 在active控件类的派生类中,如何重载事件消息那?请高手帮忙,解决后马上给分~~ 紧急请教两个迷惑的问题,希望大侠赐教!! 请教如何将GB code转成unicode? 矩阵 CryptoAPI中怎样才能得到私钥 请帮我看下这个问题,先谢谢了. 非常难找的一个错误形式 [求助!!急] 矩阵模式查找器 关于MFC的颜色怎么对应Duilib中的AS颜色? 简易浏览器制作源码或相关文档 如何调整弹出窗口的位置?(或许很可笑,可是我真的不知道)
我是在一个Dialog Base MFC程序的 OnInitDialog中调用SetWindowHookEx的,
似乎WH_CALLWNDPROC只对该我自己的对话框上的事件感兴趣,而其他程序中发生
的事件一概不理。
设置钩子代码如下:
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);
{
static int i=0;
TRACE("---------\n");
TRACE("%d, %d \n",nCode,i++);
}
Hook都要放在DLL中,MSDN有说!—————————————————————————————————
┏━★━━◆━━★━┓
♂欢|◢CSDN◣|使♂ ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃ ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛ ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip
An [[[alternative]]] method for installing a global hook procedure is to provide an installation function in the DLL, along with the hook procedure.