subject_24345.htm
来自「一些关于vc的问答」· HTM 代码 · 共 33 行
HTM
33 行
<p>
序号:24345 发表者:无非 发表日期:2002-12-11 22:46:56
<br>主题:Good John,Come in ~~
<br>内容:我做了个键盘钩子,在检查到我定义的键被按下时,给我的程序发自定义消息。问题是,钩子函数不知道我程序的句柄,怎么跟它通信呢?<BR>我打算用FindWindow()来找,不过,我既不知道我的MAINFRAME的WNDCLASS NAME,那是MFC给起的。窗口名字嘛,因为是SDI的,会在程序名字后面加文档名称。是不固定的。<BR><BR>有什么建议给我?<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:John Lan 回复日期:2002-12-11 23:12:37
<br>内容:靠,以后发email给我行了。尽量将<BR>process/thread/memory space/ etc 也就是整个程序的运行环境<BR>赖以运行的资源和简单的算法描述清楚.<BR>我会尽力解答,你可要以后请我吃饭(我好吃 :D),否则,拒绝回答 :D<BR><BR>是否HOOKER/HOOKEE 在同一进程?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无非 回复日期:2002-12-11 23:16:22
<br>内容:我装的是系统钩子啊。我不能保证只在我自己的进程里触发这个钩子啊。<BR><BR>呵呵,反正是以后请你吃饭,自然是答应咯。O)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-12-11 23:25:50
<br>内容: your hook dll will be loaded into the other processes<BR> before your application launches ?<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无非 回复日期:2002-12-11 23:36:36
<br>内容:CMyApp::InitInstance(){<BR>.......<BR> HINSTANCE hDll=LoadLibrary("Mydll"); <BR> SetWindowsHook(WH_KEYBOARD,(HOOKPROC)GetProcAddress("KeyboardProc",hDll),hDll,0);<BR>.....<BR>}<BR>//IN DLL<BR>LRESULT KeyboardProc(wParam,lParam){<BR>....//检查是不是我定义的键<BR> PostMessage(hWnd,WM_MYMESSAGE,wParam,lParam);<BR> //hWnd应该是我程序的主窗口,现在就是这个hWnd不知道怎么确定啊,我想一般安装钩子都是想要做点什么的吧,那如何让钩子和自己的程序通信,有什么通用的做法?<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:John Lan 回复日期:2002-12-11 23:45:56
<br>内容:// ur process<BR>//<BR>Create a new thread<BR>in the new thread, call GetCurrentThreadId()<BR>write your thread ID in registry or mapping-file or some where the<BR>other processes can get.<BR><BR>// in hook DLL<BR>get the thread ID<BR>PostThreadMessage(ThreadID)<BR><BR>once the new thread get the message, then <BR>post it to the main thread.<BR>(the new thread should get the main windows's handle easy in the same process)<BR><BR>now sure, u can message from hook from different process, so what left is<BR>how u handle the message in the same process(your process)...<BR><BR>还有些判断细节,你自己好好想想.<BR><BR><BR>2002-12-11 23:48:35
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?