请大神指点错在哪里?
//声明部分
//设置钩子
[DllImport("user32.dll")]
private static extern int SetWindowsHookEx(int idHook, HookHandle lpfn, IntPtr hInstance, int threadId);
private const int WH_CALLWNDPROC = 4;//消息
private HookMsgHandle _MsgHookProcedure;
private delegate int HookMsgHandle(int nCode, int wParam, IntPtr lParam);
//使用部分
public void InstallHook(ProcessMsgHandle clientMethod, string ProcessName)
{
_clientMsgMethod = clientMethod;
if (_hHookValue == 0)
{
_MsgHookProcedure = new HookMsgHandle(OnHookMsgProc);
_hookWindowPtr = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
_hHookValue = SetWindowsHookEx(
WH_CALLWNDPROC,
_MsgHookProcedure,
_hookWindowPtr,
0);// 这句崩溃了
//如果设置钩子失败.
if (_hHookValue == 0) UninstallHook();
}
}
运行到:SetWindowsHookEx 我系统崩溃了。。。提示我
是不是我委托用的不对?第二个参数错误了?和WH_CALLWNDPROC这个不匹配?
公司要我做的东西,必须要用钩子才能实现。。但是,不是钩键盘,是钩类似WM_SETTEXT,WM_GETTEXT --------------------编程问答-------------------- 您需要看下user32.dll这个动态库文件中的SetWindowsHookEx方法 --------------------编程问答--------------------
看过了啊,参数都没错的呀。。。我就是不知道,是不是传入的那个委托里面的参数是不是不对,是不是要和前面常量有对应关系的,我也没查到相关资料。。头疼啊
补充:.NET技术 , C#