VB.NET全局键盘鼠标钩子[Vb.Net Hook](修正版)

原文有些BUG,因为这是段我从C#中转换而来的代码,所在最初的转换中因为两种语言的性质不同,所以无法完全兼容一些特性。

当然,现在的我已经完全有能力兼容两种语言的特性了,所以就重写了本段代码,将原代码中的事件检测,以及原代码中的KeyPress 时间无法检测输入字符大小写的BUG消除(在此感谢verywzm 同志) 。

注意:本段代码如果想要在VS中运行,请将[工程属性] - [调试] - [启动 Visual Studio 宿主进程 ] 设置的勾去掉,或者使用 CTRL+F5 进行编译后调试!

本段代码包含危险代码,请不要用作非法用途!

-------------------------------------------------------------------

这是真正的.NET环境下的全局键盘鼠标Hook代码!

本代码是我从codeproject中翻来的,原作者Michael Kennedy,C#编码。

我将该段C#源码翻译为了VB代码,因为这两种语言的内部机制有一些区别,所以我做了较大的改动。 不容易啊~~

下面的代码是我修改和扩展后的代码,保留所有的权利,翻版不究,盗版可耻。

使用方法很简单,先新建一个类文件,将代码复制进取,然后在一个窗体的空白区域添加一个类型实 例。

Dim WithEvents MyHook As New SystemHook()

然后使用静态绑定事件就可以了。

时间: 2024-09-11 03:51:32

VB.NET全局键盘鼠标钩子[Vb.Net Hook](修正版)的相关文章

vb.net 全局键盘钩子?

问题描述 这段键盘钩子,在窗口里怎么调用啊?ImportsSystem.Reflection,System.Threading,System.ComponentModel,System.Runtime.InteropServices'''<summary>本类可以在.NET环境下使用系统键盘与鼠标钩子</summary>PublicClassSystemHook定义结构API声明导入常量声明事件委托处理PrivatehMouseHookAsIntegerPrivatehKeyboa

C#的键盘鼠标钩子 问题

问题描述 网上的例子,usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Diagnostics;namespaceSALON.UI{///<summary>///获取键盘输入或者USB扫描枪数据可以是没有焦点应为使用的是全局钩子///USB扫描枪是模拟键盘按下///这里主要处理扫描枪的值,手动输

vb.net 如何调用全局鼠标钩子,求一个实例!!!

问题描述 vb.net如何调用全局鼠标钩子,求一个实例!!! 解决方案 解决方案二:以前收藏的全局键盘鼠标勾子.太多删了一点,鼠标的保留下来了ImportsSystem.Reflection,System.Threading,System.ComponentModel,System.Runtime.InteropServicesPublicClasshook#Region"定义结构"PrivateStructureMouseHookStructDimPTAsPointDimHwndAs

自己设置了一个鼠标钩子,然后点击获取窗口坐标,但是坐标不对。

问题描述 自己设置了一个鼠标钩子,然后点击获取窗口坐标,但是坐标不对. 自己设置了一个全局的鼠标钩子,然后触发点击获取窗口坐标,当点击在窗口外的时候,获取到窗口坐标是对的,但是点击在窗口里面的时候,获取的到的窗口坐标就不对了,好像是0,0.不知道什么原因,该怎么解决这个问题? 解决方案 获取鼠标点击的坐标处理 解决方案二: 刚才尝试过,我直接把窗口坐标设置成全局变量,也不点击一次获取一次了,然后再尝试,问题依旧.那么说,点击窗口外,是正常的,点击窗口内,获取的坐标就变成了零.这是为什么?

VB键盘鼠标无动作调用程序的尝试_vb

我想要实现的功能是,当键盘无输入.鼠标无移动或点击动作时调用程序.首先想到的是用钩子HOOK来获取键盘或者鼠标的动作,如果无动作时调用程序.我尝试的结果是HOOK来HOOK去总是有问题. 后来想到Windows的屏幕保护程序就是当键盘鼠标无动作时进入屏幕保护的,于是改变思路,想把程序做成这样的形式,键盘鼠标无动作,系统进入屏幕保护,然后检测系统是否运行屏幕保护程序,如果运行的话则调用程序.这种方式就是以屏幕保护程序作为中介,把检测键盘鼠标动作的工作交给屏幕保护程序来完成了.SystemParam

我想用vb实现后台模拟鼠标键盘的动作,就像按键精灵一样

问题描述 我想用vb实现后台模拟鼠标键盘的动作,就像按键精灵一样 我在做一个表单辅助工具,希望自动将程序获得的数据自动填入表单中,希望大神给一些建议. 解决方案 sendkeys语句. 鼠标用mouse_event api函数

如何用VB做一个跟鼠标移动有关的windows服务程序?

问题描述 如何用VB做一个跟鼠标移动有关的windows服务程序? 我想做一个只要鼠标移动就会发生的一个windows 服务程序,还有要可以在龙之谷中运行. 解决方案 1.鼠标Hook 2.timer定时获取鼠标坐标 3.如果游戏有保护你可能注入不了 解决方案二: windows服务运行在单独的user session中,每个session有自己的鼠标键盘消息,所以不能用windows服务.你应该在你的当前桌面会话中编写一个拦截程序. 这里有一个例子:http://z.download.csdn

在vb中怎么样实现鼠标经过链接文字就显示一个窗口???

问题描述 在vb中怎么样实现鼠标经过链接文字就显示一个窗口??? 解决方案 解决方案二:sublinklabel1_mouseenter()form2.showform2.location=cursor.posionendsubsublinklabel1_mouseleave()form2.hideendsub解决方案三:引用1楼dylike的回复: sublinklabel1_mouseenter()form2.showform2.location=cursor.posionendsubsub

C# 全局键盘钩子 与sendkey

问题描述 C#全局键盘钩子的问题,本人刚接触,很多问题不太清楚,最好指出怎么修改谢谢.程序功能:按ctrl组合键输出一个值,按F9时也输出一个值但是F9的时候Sendkeys.send(变量)可以正常输出,而ctrl组合键输出不正常(启动程序第一次按ctrl组合键输出正常,之后就不行了),这里的变量是数组的其中一个元素键盘钩子代码可以参考http://jingyan.baidu.com/article/ceb9fb10ebd9f68cad2ba03c.html或http://pan.baidu.