
1. 系统未正确安装易语言,可能存在.dll文件缺失,或者安装过程出现错误等问题导致钩子安装失败;
2. 易语言运行环境有损坏,可能是病毒、木马等破坏或者系统更新等原因损坏了运行环境的易语言安装;
3. 易语言程序可能存在BUG,当程序运行到一定位置时,导致易语言钩子失效;
4. 当前 *** 作系统中有其他程序对圆消易语言的钩子进行了拦截或者修改,导致易语言的钩子失效;
因此,要解决易语言全局键盘钩子失效问题,首先需要将系统中的易语言重新安装或恢复到正确的配置,然后检盯备查系统 *** 作环境及程序本身,最后再检查凯腔毁系统中是否有其他程序对易语言钩子进行拦截或修改。
简单来说钩子就是系统触发一定事件下要进行 *** 作的函数,但是不同的事件会有不同的附加信息,所以根据不同的事件也会在那个三个参数中传递不同的附加内容,就是处理方法的结构必须和系统定义好的结构相同才可以下面是附加资料可以看一下
------------------------------------------------------------------------------------------------
首先说明一点,你的问题问得不是很恰当,因为钩子函数是回调函数,由系统规定参数,并传递参数,由你写好内容,然告慎后由系统在一定触发条件下调用
例如你建立的是WH_MOUSE钩子, 那么MouseProc的三个参数由 *** 作系统(实际上是WIN32 平台)传递进来,意义分别是nCode怎么处理消息, wParam消息标识, lParam是一个MOUSEHOOKSTRUCT结构指针,而我们要做的就是利用这三个参数来完成自己想实现的功能,这正是回调函数的意义!
一般做钩子用到三个函数, 主要解决的是钩子函数的定义:
钩子有局部和远程两种类型, 与钩子相关的函数有:
1. 建立钩子:SetWindowsHookEx, 其四个参数分别袜携敬为钩子类型, 钩子函数地址, 钩子函数隐备所在DLL的实例句柄,安装钩子后想监控的线程的ID号, 返回参数为钩子句柄
2. UnhookWindowsHookEx, 参数只有一个,为要卸载的钩子句柄
3. 钩子函数(名称任意), 三个参数, 具体意义与钩子类型有关
下面再举一个简单例子:
比如你想写一个程序, 当鼠标移到哪里时就在主程序中显示鼠标所在窗口的名称
--------------------
(1)如果鼠标只是局限在窗口内, 那么以上1, 2, 3三个函数均写在运行的主程序中, 比如函数1可以写在按下某个按钮的消息响应函数中,函数 2 写在松开按扭的消息响应函数中,函数 3 只要不写在别的函数中就行, 因为它本生就是一个要定义的独立函数
(2)如果鼠标可以在屏幕任意位置移动, 那么以上函数1, 2位置同(1), 但函数3要写在一个另外写的DLL里, 因为此时安装的是全局钩子, 为了达到获取窗口名称的目的, 在DLL里可能还要做一些其他工作,比如设置共享段, 关于这些这里不细说了
------------------------
如果你想问的是如何填充SetWindowsHookEx的参数 或 钩子函数的三个参数的具体意义, 那么可以参考MSDN, 因为参数与钩子类型, 要挂钩的消息有关
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)