鼠标点击次数-vb

合集下载

mouseclick用法

mouseclick用法

mouseclick用法MouseClick是一个常用于编程的函数或方法,用于模拟鼠标点击操作。

它可以在代码中指定需要点击的目标,从而实现自动化操作或者模拟用户的交互行为。

本文将从MouseClick的基本用法、应用场景和注意事项等方面进行详细讲解。

一、MouseClick的基本用法1. MouseClick函数的格式:MouseClick(button, x, y, clicks, interval)- button:表示要模拟点击的鼠标按键,请根据具体情况传递相应的值,通常是左键、右键或中键。

- x、y:表示要点击的坐标位置,即目标位置在屏幕上的横纵坐标。

- clicks:表示需要点击的次数,默认为1次。

- interval:表示每次点击的间隔时间,默认间隔为0.1秒。

2. MouseClick函数的返回值:MouseClick函数执行后,会返回一个布尔值,表示操作是否成功。

一般情况下,True表示成功,False表示失败。

故在使用MouseClick时,建议检查返回值以排除潜在的操作失败情况。

二、MouseClick的应用场景MouseClick函数适用于各种自动化操作、界面测试以及模拟用户的交互行为的场景。

下面我们将从不同的应用场景进行介绍:1. 自动化操作:在进行自动化测试或自动化脚本编写时,通过使用MouseClick函数可以实现模拟用户的点击操作,从而测试软件或网页的功能和交互性能。

例如,在网页自动化测试中,可以通过点击不同的按钮或链接实现模拟用户在网页上的点击操作。

2. 界面操作:在某些需要频繁点击按钮或完成复杂操作的软件中,可以使用MouseClick函数来简化操作过程。

例如,在图形界面应用程序中,可以通过模拟点击按钮或其他界面元素来触发相应的功能操作。

3. 游戏辅助:在某些需要自动执行重复操作的游戏中,可以使用MouseClick函数来模拟玩家点击鼠标的操作,从而实现游戏的自动化。

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解鼠标是计算机中常用的输入设备之一,通过鼠标用户可以进行控制、操作等操作。

在使用VB编程时,我们可以通过API函数来实现鼠标的一些特定操作,如设置鼠标的位置、隐藏或显示鼠标指针等。

下面我们就来详细介绍一下VB中鼠标的API函数使用方法。

首先,我们需要在VB的代码窗口中声明API函数,这样我们才能在程序中使用这些函数。

在VB中,我们可以使用Declare语句来声明API函数,如下所示:```Private Declare Function 函数名 Lib "dll文件名" (参数列表)As 返回值类型```其中,函数名是API函数的名称,Lib是API函数所在的dll文件名,参数列表是API函数的参数列表,返回值类型是API函数的返回值类型。

1.设置鼠标的位置鼠标的位置可以通过API函数SetCursorPos来设置,代码如下:```Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As LongSub SetMousePosition(ByVal X As Long, ByVal Y As Long)SetCursorPos X, YEnd Sub```在上述代码中,我们使用Declare语句声明了SetCursorPos函数,该函数位于user32.dll文件中。

然后我们定义了一个名为SetMousePosition的子过程,通过调用SetCursorPos函数来设置鼠标的位置。

2.隐藏或显示鼠标指针我们可以使用API函数ShowCursor来隐藏或显示鼠标指针,代码如下:```Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As LongSub HideCursorShowCursor FalseEnd SubSub ShowCursorShowCursor TrueEnd Sub```在上述代码中,我们使用Declare语句声明了ShowCursor函数,该函数位于user32.dll文件中。

VB实验指导例题

VB实验指导例题

实验A VB环境和可视化编程基础1.(1)运行界面(2)参考代码:Private Sub Command1_Click()label3.Caption = text1.TextEnd Sub2.模仿教材例1.1,将事件过程中自上而下移动改为自右向左移动,也要考虑文字出窗体边界的情况。

(1)运行界面(2)参考代码:Private Sub Command1_Click()Timer1.Interval = 0Call mymoveEnd SubSub mymove()Label1.Move Label1.Left - 20If Label1.Left = 0 Then Label1.Left = Form1.WidthEnd SubPrivate Sub Command2_Click()Timer1.Interval = 200End SubPrivate Sub Timer1_Timer()Call mymoveEnd Sub3.编写一程序,在文本框中统计在该窗口上鼠标单击的次数。

(1)运行界面:(2)编写代码:Private Sub Form_Click()Text1 = Val(Text1) + 1End SubPrivate Sub Form_Load()Text1.Text = ""End Sub4.代码:Private Sub Form_Click()Form1.Caption = "鼠标单击"Form1.Picture = LoadPicture("d:\1.jpg")End SubPrivate Sub Form_DblClick()Form1.Caption = "鼠标双击"Form1.Picture = LoadPicture("d:\2.jpg")End SubPrivate Sub Form_Load()Form1.Picture = LoadPicture("d:\3.jpg")End Sub5.命令按钮、字号、内容和格式的复制练习(1)运行界面(2)参考代码:Private Sub Command1_Click()Text1.FontName = "黑体"Text1.FontSize = 25End SubPrivate Sub Command2_Click()Text2.Text = Text1.SelTextText2.FontName = Text1.FontNameText2.FontSize = Text1.FontSizeText1.SetFocusEnd Sub实验B 顺序结构1.编一个华氏温度与摄氏温度之间转换的程序,要求用按钮实现转换。

Vb6记录鼠标及回放

Vb6记录鼠标及回放

Vb6记录鼠标及回放很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用了Windows的Hook函数。

本文介绍如何通过使用VB来实现鼠标键盘操作的纪录和回放。

Windows提供API函数SetwindowsHookEx来建立一个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows 消息,函数语法为:Public Declare Function SetWindowsHookEx Lib 'user32' _Alias 'SetWindowsHookExA' _(ByVal idHook As Long, _ByVal lpfn As Long, _ByVal hmod As Long, _ByVal dwThreadId As Long) As Long其中参数idHook指定建立的监视函数类型。

通过Windows MSDN帮助可以看到,SetwindowsHookEx函数提供15种不同的消息监视类型,在这里我们将使用WH_JOURNALRECORD和WH_JOURNALPLAYBACK来监视键盘和鼠标操作。

参数lpfn指定消息函数,在相应的消息产生后,系统会调用该函数并将消息值传递给该函数供处理。

函数的一般形式为:Hookproc (code: Integer; wparam: WPARAM; lparam: LPARAM ): LRESULT stdcall;其中code为系统指示标记,wParam和lParam为附加参数,根据不同的消息监视类型而不同。

只要在程序中建立这样一个函数再通过SetwindowsHookEx函数将它加入到消息监视链中就可以处理消息了。

在不需要监视系统消息时需要调用提供UnHookWindowsHookEx来解除对消息的监视。

WH_JOURNALRECORD和WH_JOURNALPLAYBACK类型是两种相反的Hook类型,前者获得鼠标、键盘动作消息,后者回放鼠标键盘消息。

vbnet控制鼠标

vbnet控制鼠标
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 '模拟鼠标右键按下
Public Const MOUSEEVENTF_RIGHTUP = &H10 '模拟鼠标右键释放
Dim iMove As Integer
Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUp.Click
Dim i As Integer
For i = 1 To 20
mouse_event(MOUSEEVENTF_MOVE, 10, 0, 0, 0)
System.Threading.Thread.Sleep(10) '进程休息10毫秒
Neate Sub btnRight_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRight.Click
'向右移动
控制鼠标
2011-05-08 21:23:06| 分类: 默认分类 |举报|字号 订阅
Declare Auto Sub mouse_event Lib "user32" (ByVal dwFlags As Int32, ByVal dx As Int32, ByVal dy As Int32, ByVal cButtons As Int32, ByVal dwExtraInfo As IntPtr)
Next i
End Sub
Private Sub btnLeft_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLeft.Click

VB上机实验2

VB上机实验2

VB上机实验2窗体设计1、本实验使用Mousemove事件,实线鼠标在标签上时标签文本为蓝色,鼠标离开标签时,标签文本为红色。

2、编写一段程序,在文本框中统计在该窗口上单击鼠标的次数,效果如下图所示。

提示:对窗口编写两个事件:Form_Load事件设置文本框初值为0;Form_Click事件对文本框累加计数。

3、创建如图所示的窗体界面,标签文本"欢迎使用VB"为四号、黑体字,按钮文本分别为"手动","自动";计时器Interval属性为50毫秒,Enabled属性为False。

要求当单击"手动"按钮的时候,每单击一次,标签从左向右移动500twip,单击"自动"按钮时,根据计时器时间间隔触发计时器事件,从左向右移动,且不管用哪种方式移动,当标签从右侧移出窗体后可以从左侧再次进入。

按要求完成界面和控件的属性设置以及相关的代码设计。

提示:窗体移动请用move方法实现【窗体设计】------------------------------------------------题目:请按照题目要求设计指定的窗体。

建立如下所示界面。

1、添加控件文本框(Text1)。

框架(Frame1,框架Frame2)。

框架(Frame1)内添加2个单选框(Option1,Option2)。

框架(Frame2)内添加3个单选框(Option3,Option4,Option5)。

2、窗体设置窗体名称(Name)为"Form1"。

窗体标题(Caption)为"字体样式"。

3、文本框设置文本框(Text1)文本(Text)属性值为"VB窗体设计"。

字体属性为"宋体"。

文字对齐方式属性为"居中对齐"。

文字颜色为&H00FF0000&。

VB模拟鼠标键盘动作

VB模拟鼠标键盘动作

模拟鼠标键盘动作有些时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。

那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows 中响应键盘事件的机制。

当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。

如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。

当你按下一个键时,这个键的扫描码就被传给系统。

扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。

键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。

键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。

什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。

无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。

简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。

当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。

然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。

最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。

这个过程可以简单的如下表示:用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口明白了这个过程,我们就可以编程实现在其中的某个环节来模拟键盘操作了。

VB教程(第2版) 第9章 鼠标、键盘和OLE

VB教程(第2版) 第9章 鼠标、键盘和OLE

9.1.1 鼠标事件
当在图片框中移动鼠标时,不断地画线和画方块,实现连续画线和方块。 Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '在图片框中移动鼠标 If Button = 1 And C2 = 1 Then Select Case C1 Case 1 Picture1.Line -(X, Y) Case 2 Picture1.Line (X1, Y1)-(X, Y), , BF End Select End If End Sub
9.1.1 鼠标事件
说明: (1)Button表示是哪个鼠标键被按下或释放。用0、1、2三个位表示鼠标 的左、右、中键,每位用0、1表示被按下或释放,三个位的二进制转换成十进 制就是Button的值,如图9.1所示,表9.1列出了按钮与常数值的对应关系。
十进制 0 1 2 3 4 5 6 7
二进制 000 001 010 011 100 101 110 111
图9.4 查看键代码
9.2 键盘事件
2. KeyPress事件 KeyPress事件是当键盘有键按下时触发的。KeyPress事件检测的键有Enter、 Tab、BackSpace以及键盘上的字母、数字和标点符号键,对于其他功能键、编 辑键和定位键,则不作响应。 语法: Private Sub 对象_KeyPress(KeyAscii As Integer) 说明: • 对象:是接受键盘事件的对象,由具有焦点的对象接收。 • KeyAscii:是按键对应的ASCⅡ码值。将keyAscii改为0时可取消本次击键, 这样对象便接收不到按键的字符。

VB鼠标点击程序

VB鼠标点击程序

Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
6秒后,第五次:“本机已进入反击模式,你的截图已被锁定,已通过网络自动报警,警察即将上门”
30秒后,第六次:“本机即将自动关机,倒计时开始(15秒)”
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
1.检测到3次F3,启动程序,但不可见;
2.若需解除,则连续按3次F4;否则,若有键盘输入,则提示并锁定对话框,第一次:“对不起,你不是本机主人,请离开”
6秒后,第二次:“你不是本机主人,请离开”
6秒后,第三次:“本机将自动进入防侵扰模式”
6秒后,第四次:“本机自动开启视频截图,锁定来犯者,转入报警攻击模式”
Timer1.Interval = Text2.Text
End Sub
Private Sub Command3_Click()
Text3.Enabled = True
Text3.Text = 0
Text3.Text = InputBox("请输入点击次数")
If (Text3.Text = "") Then

VB中的鼠标处理技术

VB中的鼠标处理技术

收稿日期:2001-06-26基金项目:上饶师范学院科研基金资助项目VB 中的鼠标处理技术!谭国律(上饶师范学院数学计算机系,江西上饶334001)摘要:详细论述了VB 系统中的鼠标事件,以及在使用方法中的技术细节和技巧,介绍了利用API 进行鼠标控制的方法,并给出了具体的应用示例程序。

关键词:VB ;鼠标事件;事件代码;API 中图法分类号:TP334.2文献标识码:B 文章编号:1001-3695(2002)04-0156-031概述鼠标是计算机基本的输入设备之一,特别在当今图形化操作界面下,没有鼠标将是极不方便的。

进行鼠标各种操作的处理是软件开发中要考虑的基本因素之一,也是软件的基本功能。

在VB6.0中,主要是通过鼠标事件代码来响应用户的操作,VB 系统为对象(控件)主要提供了五种鼠标事件:MOuseDOWD 事件、MOuse-up 事件、MOuseMOVe 事件、Ciick 事件和DbiCiick 事件。

这些事件不仅提供了响应鼠标的操作方法,而且还提供了利用鼠标进行信息输入、处理的手段以及在窗口和菜单中移动、选择的基本形式。

VB 系统提供的五个鼠标事件是:MOuseDOWD 事件当用户按下鼠标键时,触发该事件MOuseup 事件当用户释放鼠标键时,触发该事件MOuseMOVe 事件当用户移动(拖动)鼠标时,触发该事件Ciick 事件当用户单击鼠标键时,触发该事件DbiCiick 事件当用户双击鼠标键时,触发该事件2VB 鼠标事件使用方法2.1Mousedown 事件当在某个控件上按下鼠标键时触发该控件的MOuseDOWD 事件。

通常,鼠标具有左、右两个按键。

MOuseDOWD 事件用来响应用户鼠标按键以及对控制键Shift ,Ctri 和Ait 键按下情况,其用法具有如下形式:PriVate Sub FOrm MOuseDOWD (ButtOD As IDteger ,Shift As IDteger ,X AsSiDgie ,Y As SiDgie )参数ButtOD 记录用户鼠标按键的整型数值,其中1代表左键,2代表右键。

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解1. MouseDown(Button, Shift, X, Y)该函数用于模拟鼠标按下按钮的动作,Button参数可以是常量vbLeftButton、vbRightButton或vbMiddleButton,用于指示要模拟按下的鼠标键;Shift参数可以是常量vbShiftMask、vbCtrlMask或vbAltMask,表示按下Shift、Ctrl、Alt键的状态,如果Shift参数没有指定,则默认为不按下Shift、Ctrl、Alt键;X参数表示鼠标按下点的横坐标,Y参数表示鼠标按下点的纵坐标。

2. MouseUp(Button, Shift, X, Y)该函数用于模拟鼠标抬起按钮的动作,Button参数可以是常量vbLeftButton、vbRightButton或vbMiddleButton,用于指示要模拟抬起的鼠标键;Shift参数可以是常量vbShiftMask、vbCtrlMask或vbAltMask,表示抬起Shift、Ctrl、Alt键的状态,如果Shift参数没有指定,则默认为不抬起Shift、Ctrl、Alt键;X参数表示鼠标抬起点的横坐标,Y参数表示鼠标抬起点的纵坐标。

3. MouseMove(X, Y)该函数用于模拟鼠标移动的动作,X参数表示鼠标移动目标点的横坐标,Y参数表示鼠标移动目标点的纵坐标。

4. MouseWheel(WheelClicks)该函数用于模拟鼠标滚轮操作,WheelClicks参数表示要模拟的滚轮点击数,每次滚轮转动一次,WheelClicks参数的值就会增加或减少一;如果是向前滚动,则WheelClicks参数值应该大于0;如果是向后滚动,则WheelClicks参数值应该小于0。

5. DragPicture(Picture, X1, Y1, X2, Y2, Mode)该函数用于拖拽图形,Picture参数表示拖拽对象。

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解

1.变换鼠标左右键添加Command1Private Declare Function SwapMouseButton Lib "user32" (ByV al bSwap As Long) As LongPrivate Sub Command1_Click()SwapMouseButton TrueMsgBox "退出前你现在是左撇子"End SubPrivate Sub Form_Unload(Cancel As Integer)SwapMouseButton FalseMsgBox "鼠标左右键已灰复"End Sub2.得知鼠标位置'添加Timer1Option Explicit'*********************** 得知鼠标位置的API ******************************* Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Type POINTAPIX As LongY As LongEnd Type'*************************************************************************Private Sub Form_Load()Timer1.Interval = 10End SubPrivate Sub Timer1_Timer()Dim Point As POINTAPIGetCursorPos PointMe.Caption = Point.X & " " & Point.YEnd Sub3.动画鼠标'添加Picture1Option ExplicitPrivate Const GCL_HCURSOR& = (-12)Private Declare Function SetClassLong& Lib "user32" Alias "SetClassLongA" (ByV al hWnd As Long, ByV al nIndex As Long, ByV al dwNewLong As Long)Private Declare Function LoadCursorFromFile& Lib "user32" Alias "LoadCursorFromFileA"(ByV al lpFileName As String)Private NewCursor1 As LongPrivate OldCursor1 As LongPrivate NewCursor2 As LongPrivate OldCursor2 As LongDim appdisk$, winpath$Private Sub Form_Load()appdisk = Trim(App.Path)If Right(appdisk, 1) <> "\" Then appdisk = appdisk & "\"winpath = Environ("windir") 'windows系统路径NewCursor1 = LoadCursorFromFile(winpath & "\cursors\appstart.ani") 'windows的cursors 自带的.aniOldCursor1 = SetClassLong(Me.hWnd, GCL_HCURSOR, NewCursor1)NewCursor2 = LoadCursorFromFile(appdisk & "dinol.ani")OldCursor2 = SetClassLong(Picture1.hWnd, GCL_HCURSOR, NewCursor2)End SubPrivate Sub Form_Unload(Cancel As Integer)SetClassLong Me.hWnd, GCL_HCURSOR, OldCursor1SetClassLong Picture1.hWnd, GCL_HCURSOR, OldCursor2End Sub4.模拟点击鼠标'添加Command1 Command2 Command3Option Explicit'****************************************************************************** ***Private Declare Function SetCursorPos Lib "user32" (ByV al X As Long, ByV al Y As Long) As LongPrivate Declare Sub mouse_event Lib "user32" (ByV al dwFlags As Long, ByV al dx As Long, ByV al dy As Long, ByV al cButtons As Long, ByV al dwExtraInfo As Long)Const MOUSEEVENTF_LEFTDOWN = &H2Const MOUSEEVENTF_LEFTUP = &H4Const MOUSEEVENTF_RIGHTDOWN = &H8Const MOUSEEVENTF_RIGHTUP = &H10'****************************************************************************** ***Dim x1&, y1&Private Sub Form_Load()Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '窗体置于屏幕中心Command1.Caption = "模拟点左键"Command2.Caption = "模拟点右键"End SubPrivate Sub Command1_Click()x1 = (Me.Left + Command3.Left + Command3.Width / 2) \ 15y1 = (Me.Top + Command3.Top + Command3.Height / 2 + 405) \ 15SetCursorPos x1, y1mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 End SubPrivate Sub Command2_Click()x1 = (Me.Left + Command3.Left + Command3.Width / 2) \ 15y1 = (Me.Top + Command3.Top + Command3.Height / 2 + 405) \ 15SetCursorPos x1, y1mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 End SubPrivate Sub Command3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenMsgBox "您点击了右键"ElseMsgBox "您点击了左键"End IfEnd Sub5.模拟鼠标移动'添加Command1Option Explicit'********************************* 时间延迟的API *************************** Private Declare Sub Sleep Lib "kernel32" (ByV al dwMilliseconds As Long)'********************************* 设置鼠标位置的API *********************** Private Declare Function SetCursorPos Lib "user32" (ByV al X As Long, ByV al Y As Long) As Long'****************************************************************************Dim x1&, y1&, x2&, y2&Private Sub Form_Load()Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '窗体置于屏幕中心'将Command1置于窗体中心Command1.Move (Me.ScaleWidth - Command1.Width) \ 2, (Me.ScaleHeight - Command1.Height) \ 2Command1.Caption = "模拟鼠标移动"x1 = (Me.Left + Command1.Left + Command1.Width / 2 + 60) \ 15y1 = (Me.Top + Command1.Top + Command1.Height / 2 + 405) \ 15SetCursorPos x1, y1 '将鼠标移动到Command1上面End SubPrivate Sub Command1_Click()Randomizex1 = Int(Rnd * (Screen.Width \ 15))y1 = Int(Rnd * (Screen.Height \ 15))x2 = (Me.Left + Command1.Left + Command1.Width / 2 + 60) \ 15y2 = (Me.Top + Command1.Top + Command1.Height / 2 + 405) \ 15DoIf Abs(x1 - x2) >= 4 Thenx1 = IIf(x1 > x2, x1 - 4, x1 + 4)End IfIf Abs(y1 - y2) >= 3 Theny1 = IIf(y1 > y2, y1 - 3, y1 + 3)End IfSetCursorPos x1, y1Sleep 10 '延迟5毫秒If Abs(x1 - x2) <= 4 And Abs(y1 - y2) <= 3 Then Exit DoLoopEnd Sub6.鼠标定位在窗体中间'鼠标定位在窗体中间Private Declare Function SetCursorPos Lib "user32" (ByV al x As Long, ByV al y As Long) As LongPrivate Sub Form_Load()Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2SetCursorPos (Me.Left + (Me.Width \ 2)) \ 15, (Me.Top + (Me.Height \ 2)) \ 15End Sub7.鼠标是否在窗体上'添加Timer1Option Explicit'*****************************************************Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function GetWindowRect Lib "user32" (ByV al hwnd As Long, lpRect As RECT) As LongPrivate Type POINTAPIx As Longy As LongEnd TypePrivate Type RECTLeft As LongTop As LongRight As LongBottom As LongEnd Type'*************************************************Private Sub Form_Load()Timer1.Interval = 10Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Timer()Dim P As POINTAPI, R As RECTGetCursorPos PGetWindowRect Me.hwnd, RIf P.x < R.Left Or P.x > R.Right Or P.y < R.Top Or P.y > R.Bottom ThenMe.Caption = "不在"ElseMe.Caption = "在"End IfEnd Sub8.鼠标限制在窗体内.txt'添加Picture1 Command1 Command2Option Explicit'***************************************************************Private Type RECTleft As Longtop As Longright As Longbottom As LongEnd TypePrivate Declare Function SetCursorPos Lib "user32" (ByV al x As Long, ByV al y As Long) As LongPrivate Declare Function ClipCursor Lib "user32" (lpRect As Any) As LongPrivate Declare Function GetWindowRect Lib "user32" (ByV al hwnd As Long, lpRect As RECT) As LongPrivate Declare Function GetSystemMetrics Lib "user32" (ByV al nIndex As Long) As Long Const SM_CYCAPTION = 4Const SM_CXFRAME = 32Const SM_CYFRAME = 33'******************************************************Dim x1%, y1%Dim r As RECTPrivate Sub Form_Load()Command1.Caption = "将鼠标限制在PictureBox内"Command2.Caption = "将鼠标限制在窗体内"Picture1.AutoRedraw = TruePicture1.Width = 2000Picture1.Print "在图片匡内双击释放鼠标"Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 SetCursorPos (Me.left + Me.Width \ 2) \ 15, (Me.top + Me.Height \ 2) \ 15 End SubPrivate Sub Form_Unload(Cancel As Integer)Call ReleaseEnd Sub' 将鼠标限制在PictureBox内Private Sub Command1_Click()RestrictToControl Picture1 'RestrictToControl在模块程序中有定义CenterOnControl Picture1End Sub'将鼠标限制在窗体内Private Sub Command2_Click()RestrictToForm MeCenterOnForm MeEnd Sub' 双击鼠标左键释放光标Private Sub Picture1_DblClick()Call ReleaseEnd SubPrivate Sub Release()Call ClipCursor(ByV al vbNullString)End SubPrivate Sub RestrictToControl(cntl As Control)On Error Resume NextCall GetWindowRect((cntl.hwnd), r)If Err.Number = 0 Then Call RestrictToRect(r)End SubPrivate Sub CenterOnControl(cntl As Control)On Error Resume NextCall GetWindowRect((cntl.hwnd), r)If Err.Number = 0 Then CenterOnRect rEnd SubPrivate Sub CenterOnForm(frm As Form)Call GetClientScrnRect(frm, r)Call CenterOnRect(r)End SubPrivate Sub RestrictToForm(frm As Form)Call GetClientScrnRect(frm, r)Call RestrictToRect(r)End SubPrivate Sub RestrictToRect(lpRect As RECT)Call ClipCursor(lpRect)End SubPrivate Sub CenterOnRect(lpRect As RECT)Call SetCursorPos(lpRect.left + (lpRect.right - lpRect.left) \ 2, lpRect.top + (lpRect.bottom - lpRect.top) \ 2)End SubPrivate Sub GetClientScrnRect(frm As Form, rC As RECT)Call GetWindowRect((frm.hwnd), rC)x1 = GetSystemMetrics(SM_CXFRAME)y1 = GetSystemMetrics(SM_CYFRAME)rC.left = rC.left + x1rC.right = rC.right - x1rC.top = rC.top + y1 + GetSystemMetrics(SM_CYCAPTION)rC.bottom = rC.bottom - y1End Sub9.隐藏鼠标'添加Command1'True:1 显示鼠标/ 0 False:隐藏鼠标'****************************************************Private Declare Function ShowCursor Lib "user32" (ByV al bShow As Long) As Long'****************************************************************Private Sub Form_Load()Me.KeyPreview = TrueEnd SubPrivate Sub Command1_Click()ShowCursor (0)Me.Caption = "鼠标已隐藏,请按任何键退出" '别管任务栏还看得到,全屏即看不到了. End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode <> 0 Then Unload MeEnd SubPrivate Sub Form_Unload(Cancel As Integer)ShowCursor (1)Set Form1 = NothingEnd Sub10.自创手指图标Option ExplicitPrivate Declare Function SetCursor Lib "user32" (ByV al hCursor As Long) As LongPrivate Sub Form_Unload(Cancel As Integer)SetCursor 65553End SubPrivate Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)SetCursor 65581End Sub。

VB程序中实现鼠标

VB程序中实现鼠标

在VB程序中实现鼠标右键双击西北工业大学(710072) 况正谦在Microsoft Visual BASIC(VB)中,窗体(Form)和控件(Control)等对象的单击(Click)和双击(Double-Click)事件都是指鼠标左键而言的。

鼠标右键的单击和双击事件在VB中没有对应的事件驱动过程去响应和处理。

但是在实际应用中(特别是一些可视化的图形软件)可能对鼠标键的功能定义比较丰富,单靠鼠标左键的单击和双击难以满足复杂的需要。

因此有必要开发和扩充VB应用程序对鼠标右键的响应能力。

VB定义的鼠标事件VB定义的鼠标事件有五种:单击(Click)、双击(DblClick)、鼠标键按下(MouseDown)、鼠标键松开(MouseUp)和鼠标光标移动(MouseMove)。

其中前两种事件单击和双击是专指鼠标左键而言,后三种则适用于所有鼠标键。

后三种鼠标事件的事件驱动过程有如下的形式: Sub对象名-鼠标事件(Button As Integer,Shift As Integer, X As Single, Y As Single) 用户插入的事件响应和处理代码End Sub 传递给事件过程的参数中,整型数Button的最低三位从右到左分别对应鼠标左、右、中三个键。

事件发生时,哪个或哪些键处于被按下的状态,Button的对应位就为1,否则为0。

程序中可以用VB的位运算AND来检测鼠标键的状态。

整数Shift的最低三位从右到左分别对应事件发生时键盘的Shift、Ctrl、Alt键。

事件发生时,Shift、Ctrl、Alt中的哪个或哪些键处于被按下的状态,参数Shift 的对应位就为1,否则为0。

单精度值X和Y存放的是事件发生时鼠标光标的X-Y坐标值。

该值对于窗体对象而言是鼠标光标在窗体客户区中的坐标,对于控件对象则是鼠标光标在窗体客户区中相对于控件左上角的坐标。

鼠标右键事件的检测实际上,鼠标的单击事件可以被分解为MouseDown和MouseUp两个事件,所以我们可以用MouseDown事件来取代单击事件。

VB模拟一次鼠标事件

VB模拟一次鼠标事件

VB模拟一次鼠标事件使用API函数mouse_event可以模拟一次鼠标事件,比如左键单击、双击和右键单击等。

这个实例利用此函数产生了十分有趣的效果,无论鼠标处于屏幕的任何位置,每隔一秒程序会使鼠标在那个位置单击或双击一次,这会给我们造成什么样的混乱呢?试一试就知道了。

-------------------------------------------模拟鼠标的左键单击和右键单击-------------------------------------------程序说明:本例采用API函数实现模拟的鼠标事件,程序运行后会产生十分有趣的效果。

也来试一试。

本例中只使用了相对鼠标坐标,我们也可以使用绝对鼠标坐标来试一试。

-------------------------------------------【VB声明】Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)【说明】模拟一次鼠标事件【备注】进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度【参数表】dwFlags -------- Long,下述标志的一个组合MOUSEEVENTF_ABSOLUTEdx和dy指定鼠标坐标系统中的一个绝对位置。

在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 -MOUSEEVENTF_MOVE 移动鼠标MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下MOUSEEVENTF_RIGHTUP 模拟鼠标右键抬起MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下MOUSEEVENTF_MIDDLEUP 模拟鼠标中键抬起dx ------------- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动dy ------------- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动cButtons ------- Long,未使用dwExtraInfo ---- Long,通常未用的一个值。

vb中键盘鼠标事件

vb中键盘鼠标事件

第12章键盘与鼠标事件过程Visual Basic应用程序能够响应多种键盘事件和鼠标事件。

例如,窗体、图片框与图像控件都能检测鼠标指针的位置,并可判定其左、右键是否已经按下,还能响应鼠标按钮与Shift、Ctrl或Alt键的各种组合。

利用键盘事件可以编程响应多种键盘操作,也可以解释、处理ASCII字符。

Visual Basic应用程序还支持大多数控件及OLE的拖放功能,可用控件的Drag方法连同某些属性和事件宋实现控件的拖放操作。

OLE的拖放使应用程序的数据交换功能大大增强。

本章将对键盘和鼠标事件进行详细讲解,使读者掌握利用键盘和鼠标进行编程的基本技术。

12.1键盘事件键盘事件是用户与程序之间交互操作中的主要元素之—。

单击鼠标和按下按键都可以触发事件,而且还提供进行数据输入的手段以及在窗口和菜单中移动的基本形式。

键盘事件有三种,即KeyPress、KeyUp和KeyDown事件。

窗体和可接受键盘输入的控件(如文本框TextBox、命令按钮CommandButton、图片框PictureBox、组合框ComboBox 等)都可识别这些事件。

值得注意的是,只有获得焦点的对象才能够接受键盘事件。

对于窗体,只有成为活动窗体并且窗体中的任何控件均未获得焦点时,才会产生窗体的键盘事件。

窗体中任何控件已经获得焦点时,会产生控件的键盘事件。

12.1.1 KeyPress事件当用户按下键盘上的某个键时,将触发KeyPress事件。

该事件可以用于窗体和大部分标准控件,严格来说,当按下某个键时,所触发的是具有输入焦点(FOCUS)的那个控件的KeyPress事件。

在某一时刻,输入焦点只能位于某一个控件上,如果窗体上没有可见或有效的控件,则输入焦点位于窗体上。

当一个控件或窗体拥有输入焦点时,该控件或窗体将接受从键盘上输入的信息。

例如,假定一个文本框拥有输入焦点,则从键盘上输入的任何字符都将在该文本框上回显。

KeyPress事件过程的一般格式是:Private Sub对象名KeyPress(KeyAscii as Integer)事件过程End Sub如果接受KeyPress事件的对象为控件数组,对应的事件过程的格式为:Private Sub 对象名_KeyPress(Index as Integer,KeyAscii AS Integer)事件过程End Sub其中,“Index”是数组元素的下标。

vb中键盘鼠标事件

vb中键盘鼠标事件

第12章键盘与鼠标事件过程Visual Basic应用程序能够响应多种键盘事件和鼠标事件。

例如,窗体、图片框与图像控件都能检测鼠标指针的位置,并可判定其左、右键是否已经按下,还能响应鼠标按钮与Shift、Ctrl或Alt键的各种组合。

利用键盘事件可以编程响应多种键盘操作,也可以解释、处理ASCII字符。

Visual Basic应用程序还支持大多数控件及OLE的拖放功能,可用控件的Drag方法连同某些属性和事件宋实现控件的拖放操作。

OLE的拖放使应用程序的数据交换功能大大增强。

本章将对键盘和鼠标事件进行详细讲解,使读者掌握利用键盘和鼠标进行编程的基本技术。

12.1键盘事件键盘事件是用户与程序之间交互操作中的主要元素之—。

单击鼠标和按下按键都可以触发事件,而且还提供进行数据输入的手段以及在窗口和菜单中移动的基本形式。

键盘事件有三种,即KeyPress、KeyUp和KeyDown事件。

窗体和可接受键盘输入的控件(如文本框TextBox、命令按钮CommandButton、图片框PictureBox、组合框ComboBox 等)都可识别这些事件。

值得注意的是,只有获得焦点的对象才能够接受键盘事件。

对于窗体,只有成为活动窗体并且窗体中的任何控件均未获得焦点时,才会产生窗体的键盘事件。

窗体中任何控件已经获得焦点时,会产生控件的键盘事件。

12.1.1 KeyPress事件当用户按下键盘上的某个键时,将触发KeyPress事件。

该事件可以用于窗体和大部分标准控件,严格来说,当按下某个键时,所触发的是具有输入焦点(FOCUS)的那个控件的KeyPress事件。

在某一时刻,输入焦点只能位于某一个控件上,如果窗体上没有可见或有效的控件,则输入焦点位于窗体上。

当一个控件或窗体拥有输入焦点时,该控件或窗体将接受从键盘上输入的信息。

例如,假定一个文本框拥有输入焦点,则从键盘上输入的任何字符都将在该文本框上回显。

KeyPress事件过程的一般格式是:Private Sub对象名KeyPress(KeyAscii as Integer)事件过程End Sub如果接受KeyPress事件的对象为控件数组,对应的事件过程的格式为:Private Sub 对象名_KeyPress(Index as Integer,KeyAscii AS Integer)事件过程End Sub其中,“Index”是数组元素的下标。

vb如何控制鼠标

vb如何控制鼠标

vb如何控制鼠标来源:作者:2007-10-24 出处:主要是要通过两个方面:(一)对鼠标的停留位置做出判断,也就是得到鼠标在屏幕上停留的位置。

(二)将鼠标的移动到所确定的位置上。

而实现这个功能则要使用到SetCursorPos这个函数,此函数的功能是设定鼠标位置。

这个函数的声明如下:Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long而仅仅有这个函数是不够的,还需要定义一个type格式的自定义变量。

定义为:Public Type POINTAPIx As Longy As LongEnd Type它用于存放鼠标的位置(屏幕上的位置)。

但是一个新的问题又出现了:鼠标到底放在哪里呢?也就是如何获得屏幕上的位置。

这个问题就要用到另一个函数:GetCursorPos,它的功能是获得屏幕上鼠标的坐标。

它的声明如下:Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long这样就可以通过GetCursorPos函数获得鼠标的位置,存放到一个POINTAPI变量中,再通过SetCursorPos函数来设置鼠标的位置。

这样就可以十分顺利的来控制鼠标了!最近我在做一个项目,需要把数据用图表形式显示出来,用的是VB+ACCESS,请问如何把字段放到图表的XY轴的刻度上?Private Sub Command2_Click()Dim arrPriceQuantity(1 To 5, 1 To 2)Dim i As IntegerFor i = 1 To 5arrPriceQuantity(i, 1) = i ' Series 1Next iMSChart1.ChartData = arrPriceQuantityEnd SubVB6.0中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,可显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。

VB键盘鼠标常数表

VB键盘鼠标常数表

VB键盘鼠标常数表KeyCode常数用法--------------------------------------------------------------------------------可在代码中的任何地方用下列常数代替实际值:常数值描述vbKeyLButton 0x1 鼠标左键vbKeyRButton 0x2 鼠标右键vbKeyCancel 0x3 CANCEL 键vbKeyMButton 0x4 鼠标中键vbKeyBack 0x8 BACKSPACE 键vbKeyTab 0x9 TAB 键vbKeyClear 0xC CLEAR 键vbKeyReturn 0xD ENTER 键vbKeyShift 0x10 SHIFT 键vbKeyControl 0x11 CTRL 键vbKeyMenu 0x12 MENU 键vbKeyPause 0x13 PAUSE 键vbKeyCapital 0x14 CAPS LOCK 键vbKeyEscape 0x1B ESC 键vbKeySpace 0x20 SPACEBAR 键vbKeyPageUp 0x21 PAGE UP 键vbKeyPageDown 0x22 PAGE DOWN 键vbKeyEnd 0x23 END 键vbKeyHome 0x24 HOME 键vbKeyLeft 0x25 LEFT ARROW 键vbKeyUp 0x26 UP ARROW 键vbKeyRight 0x27 RIGHT ARROW 键vbKeyDown 0x28 DOWN ARROW 键vbKeySelect 0x29 SELECT 键vbKeyPrint 0x2A PRINT SCREEN 键vbKeyExecute 0x2B EXECUTE 键vbKeySnapshot 0x2C SNAPSHOT 键vbKeyInsert 0x2D INSERT 键vbKeyDelete 0x2E DELETE 键vbKeyHelp 0x2F HELP 键vbKeyNumlock 0x90 NUM LOCK 键A至Z键与A至Z字母的ASCII码相同:常数值描述vbKeyA 65 A 键vbKeyB 66 B 键vbKeyC 67 C 键vbKeyD 68 D 键vbKeyE 69 E 键vbKeyF 70 F 键vbKeyG 71 G 键vbKeyH 72 H 键vbKeyI 73 I 键vbKeyJ 74 J 键vbKeyK 75 K 键vbKeyL 76 L 键vbKeyM 77 M 键vbKeyN 78 N 键vbKeyO 79 O 键vbKeyP 80 P 键vbKeyQ 81 Q 键vbKeyR 82 R 键vbKeyS 83 S 键vbKeyT 84 T 键vbKeyU 85 U 键vbKeyV 86 V 键vbKeyW 87 W 键vbKeyX 88 X 键vbKeyY 89 Y 键vbKeyZ 90 Z 键0至9键与数字0至9的ASCII码相同:常数值描述vbKey0 48 0 键vbKey1 49 1 键vbKey2 50 2 键vbKey3 51 3 键vbKey4 52 4 键vbKey5 53 5 键vbKey6 54 6 键vbKey7 55 7 键vbKey8 56 8 键vbKey9 57 9 键下列常数代表数字键盘上的键:常数值描述vbKeyNumpad0 0x60 0 键vbKeyNumpad1 0x61 1 键vbKeyNumpad2 0x62 2 键vbKeyNumpad3 0x63 3 键vbKeyNumpad4 0x64 4 键vbKeyNumpad5 0x65 5 键vbKeyNumpad6 0x66 6 键vbKeyNumpad7 0x67 7 键vbKeyNumpad8 0x68 8 键vbKeyNumpad9 0x69 9 键vbKeyMultiply 0x6A MULTIPLICATION SIGN (*) 键vbKeyAdd 0x6B PLUS SIGN (+) 键vbKeySeparator 0x6C ENTER 键vbKeySubtract 0x6D MINUS SIGN (-) 键vbKeyDecimal 0x6E DECIMAL POINT (.) 键vbKeyDivide 0x6F DIVISION SIGN (/) 键下列常数代表功能键:常数值描述vbKeyF1 0x70 F1 键vbKeyF2 0x71 F2 键vbKeyF3 0x72 F3 键vbKeyF4 0x73 F4 键vbKeyF5 0x74 F5 键vbKeyF6 0x75 F6 键vbKeyF7 0x76 F7 键vbKeyF8 0x77 F8 键vbKeyF9 0x78 F9 键vbKeyF10 0x79 F10 键vbKeyF11 0x7A F11 键vbKeyF12 0x7B F12 键vbKeyF13 0x7C F13 键vbKeyF14 0x7D F14 键vbKeyF15 0x7E F15 键vbKeyF16 0x7F F16 键。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前两天有个网友问我,用VB怎么来统计鼠标点击的次数,不单单是统计VB程序本身,而且要统计系统全局鼠标点击的次数。
要统计全局鼠标点击的此时,必须要使用到全局鼠标钩子。全局钩子一般都要通过DLL文件来实现,今天我就介绍一种不使用DLL文件,直接使用EXE程序,来实现全局鼠标钩子
'首先用建立一个标准Exe程序
DelHook
End Sub
这样就大功告成了,各位可以自己试一下

Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (yVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
'鼠标钩子
Public Function CallMouseHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If code = HC_ACTION Then
CopyMemory MouseMsg, lParam, LenB(MouseMsg)
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
Public Const WM_MOUSEACTIVATE = &H21
Public Const WM_MOUSEFIRST = &H200
'把窗体名称,设定为frmMain
'在窗体上建立一组文本框数组,名称为txtMsg
'txtMsg(0) -- 显示鼠标左键按下的次数
'txtMsg(1) -- 显示鼠标中键按下的次数
'txtMsg(2) -- 显示鼠标右键按下的次数
'txtMsg(3) -- 显示鼠标按下的总次数
'然后建立一个Module,并输入以下代码
End If
End Function
'接下来,我们再给窗体里面添加代码
Private Sub AddHook() '安装鼠标钩子
lHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0)
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)
Public Type MOUSEMSGS
Public Const WM_MOUSELAST = &H209
Public Const WM_MOUSEWHEEL = &H20A
Public MouseMsg As MOUSEMSGS
Public lHook As Long '记录Hook的值,以便退出程序的时候销毁Hook
Public lClick As Long, mClick As Long, rClick As Long, tClick As Long '用来统计鼠标各个键的按下次数
rClick = rClick + 1
tClick = tClick + 1
frmMain.txtMsg(2).Text = rClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0
End Select
End If
If code <> 0 Then
CallMouseHookProc = CallNextHookEx(0, code, wParam, lParam) '使用CallNextHookEx,来保证鼠标钩子能够被其它程序使用
Public Const WH_MOUSE_LL = 14
'-----------------------------------------
'消息
Public Const HC_ACTION = 0
'鼠标消息
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
frmMain.Caption = "X=" + Str(MouseMsg.X) + " Y=" + Str(MouseMsg.Y)'在主窗口上显示鼠标的当前位置
Select Case wParam '根据不同鼠标动作进行处理,在这里只处理了鼠标按下的动作
Case WM_LBUTTONDOWN '左键按下
End Sub
Private Sub DelHook()'卸除鼠标钩子
UnhookWindowsHookEx lHook
End Sub
Private Sub Form_Load() '窗体载入的时候,安装鼠标钩子
AddHook
End Sub
Private Sub Form_Unload(Cancel As Integer)'窗体卸载的时候,卸除鼠标钩子
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
frmMain.txtMsg(1).Text = mClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0
Case WM_RBUTTONDOWN '右键按下
lClick = lClick + 1 '进行统计,并显示在住窗体的文本框上
tClick = tClick + 1
frmMain.txtMsg(0).Text = lClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0 '这里把返回值设定为0,保证鼠标动作正常完成
Case WM_MBUTTONDOWN '中键按下
mClick = mClick + 1
tClick = tClick + 1
X As Long 'x座标
Y As Long 'y座标
a As Long
b As Long
time As Long 'Window运行时间
End Type
相关文档
最新文档