当前位置:编程学习 > C#/ASP.NET >>

请大神指点错在哪里?


//声明部分

//设置钩子 
        [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方法 --------------------编程问答--------------------
引用 1 楼 lyq8376 的回复:
您需要看下user32.dll这个动态库文件中的SetWindowsHookEx方法


看过了啊,参数都没错的呀。。。我就是不知道,是不是传入的那个委托里面的参数是不是不对,是不是要和前面常量有对应关系的,我也没查到相关资料。。头疼啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,