//声明部分//设置钩子
[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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货