HOOK求救,钩子函数
vcx 2000-08-28 11:42:00 我简单测试了一个全局鼠标钩子函数,但它却无法运作,编辑框中无任何显示,请高手帮忙看一下问题出在哪里,谢谢!
主程序中安装钩子:
BOOL CHookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
......
Cmyhook m_hook;
CWnd *pwnd=GetDlgItem(IDC_EDIT1);
m_hook.starthook(pwnd->GetSafeHwnd());
......
}
钩子函数的DLL:
#include "stdafx.h"
#include <afxdllx.h>
#pragma data_seg("mydata")
HWND glhDisplayWnd=NULL; //显示目标窗口标题编辑框的句柄
HHOOK glhHook=NULL; //安装的鼠标勾子句柄
HINSTANCE glhInstance=NULL; //DLL实例句柄
#pragma data_seg()
#pragma comment(linker,"/section:mydata,rws")
static AFX_EXTENSION_MODULE MyhookDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
......
glhInstance=hInstance;
......
}
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
char *szCaption="kkkkk";
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
BOOL Cmyhook::starthook(HWND hWnd)
{
glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
glhDisplayWnd=hWnd;
}