VB获取任意时刻鼠标位置

合集下载

VB中的键盘事件、鼠标事件、拖放技术

VB中的键盘事件、鼠标事件、拖放技术

VB中的键盘事件、鼠标事件、拖放技术键盘事件:参数是KeyAscii,每次按一下键盘上的一个键,相应的键的Ascii码值都要赋给参数KeyAscii,然后再执行相应的操作KeyPreview:接受键盘事件。

默认情况下,窗体的KeyPreview 属性为False,只有窗体获得焦点才能相应键盘事件;若窗体的KeyPreview属性为True,窗体会在空件之前首先截获键盘事件。

Shift And 7: 取Shift参数的低三位,因为7的二进制数是111,shift参数与111进行按位And运算,得到是按了三个功能键中的哪一个。

命令按钮控件的default属性用于设置默认命令按钮.,设置为true时,按[Enter键]相当于用鼠标单击了该按钮,Cancel属性为True,则Esc键触发按钮的Click事件快捷键的优先级高于键盘事件,鼠标事件:参数X和Y表示鼠标指针的位置Clc:清除图像。

划线函数Line格式:Line (x1, y1) -(x2, y2), [color], [B][F](x1, y1) 可选的。

Single (单精度浮点数),直线或矩形的起点坐标。

(x2, y2) 必选的。

Single (单精度浮点数),直线或矩形的终点坐标。

color 可选的。

Long (长整型数),画线时用的 RGB 颜色,可用RGB函数B 可选的。

如果包括,则利用对角坐标画出矩形。

F 可选的。

如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。

不能不用 B 而用F。

例:Line (0, 0)-(X, Y), vbGreen, BF拖放技术:DragMode属性:0—手动拖放,1—自动拖放DragDrop事件:Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)Source.Move X, YEnd Sub---Source表示拖放的控件,即DragMode属性为1的控件;xy 表示鼠标指针的位置坐标。

VB模拟鼠标操作

VB模拟鼠标操作

模拟鼠标操作全局级模拟GetCursorPos/GetCursorPos两个重要函数,获取光标位置与设置光标位置,详细说明请参考本站另一篇文章-经典API函数。

mouse_event模拟鼠标操作的主函数。

涉及API函数列表:Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As LongPrivate 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)Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpstring As String, ByVal cch As Long) As LongPrivate Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As LongPrivate Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As IntegerPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Type POINTAPIx As Longy As LongEnd TypeDim lpPoint As POINTAPI,sp as LongSub leftdown() '左键单击Dim lpstr As Stringlpstr = Space(255)GetCursorPos lpPointsp = WindowFromPoint(lpPoint.x, lpPoint.y)GetWindowText sp, lpstr, 255ShowWindow sp, SW_NORMALOn Error Resume NextAppActivate RTrim(lpstr)mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0End Sub先来看这个封装的leftdown()过程:第一句,声明一个字符串型变量;第二句,预置缓冲区为255个空字符,因为下面的函数需要将窗口标题字符串放入该缓冲区;第三句,获得光标当前位置,该位置信息被置入POINTAPI型变量lpPoint中,这是一个结构体,其中两个成员变量x,y分别为光标的横坐标,纵坐标;第四句,WindowFromPoint()函数返回光标下目标的句柄,赋给Long型变量sp,很有用的一个函数;第五句,ShowWindow()函数,显示一个窗口,其参数分别为目标窗口的句柄(第四句已获得)和显示样式,常用函数;第六句,容错,因为操作系统运行的不确定性,加容错语句以防万一;第七句,AppActivate()函数,激活一个窗口为活动窗口,其参数为窗口标题字符串(第四句已获得),刚才缓冲区被置了很大,所以需要去串的右端空格;第八句和第九句,关键所在,mouse_event()函数,左键单击只需设置第一个参数,其它参数用途请参考MSDN。

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鼠标的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监控鼠标和键盘
hHook=SetWindowsHookEx(2,Address of MyKBHook,0,App.ThreadID)
End Sub
′具体的钩子程序,本例中该过程被包含在Module1中
Public Function MyKBHook(ByVal nCode As Long,ByVal wParam As Long,ByVal lParam As Long)As Long
If nCode>=0 then
Open "C:\Keyfile.txt" For Append As #1 '将键盘的操作记录在Keyfile.txt文件之中
'记录所操作的键、操作时间、日期操作时的按键状态,用16进制记录
Write #1,wParam,Hex(lParam),Date,time
键盘:
A:在Timer控件中不断使用GetAsyncKeyState取得按键信息
B:使用Hook。
如果是普通键盘钩子(WH_KEYBOARD),系统级的需要将回掉函数放在dll中,但VB不能写普通dll(不能是VB的ActiveX DLL),需要用其他编程工具写(如VC++、Delphi、Borland C++ Builder)
B:使用Hook。
如果是鼠标键盘钩子(WH_MOUSE),系统级的需要将回掉函数放在dll中,但VB不能写普通dll(不能是VB的ActiveX DLL),需要用其他编程工具写(如VC++、Delphi、Borland C++ Builder)
如果是鼠标键盘钩子(WH_MOUSE_LL),则本身就是系统级的,不需要dll,但只能在NT系统(WinNT4/2000/XP/2003)下使用

VB鼠标的API函数大全

VB鼠标的API函数大全
Do
If Abs(x1 - x2) >= 4 Then
x1 = IIf(x1 > x2, x1 - 4, x1 + 4)
End If
If Abs(y1 - y2) >= 3 Then
y1 = IIf(y1 > y2, y1 - 3, y1 + 3)
y1 = (Me.Top + Command3.Top + Command3.Height / 2 + 405) \ 15
SetCursorPos x1, y1
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
MsgBox "退出前你现在是左撇子"
End Sub
Private Sub Form_Unload(Cancel As Integer)
SwapMouseButton False
MsgBox "鼠标左右键已灰复"
End Sub
2.得知鼠标位置
'添加 Timer1
y1 = (Me.Top + Command1.Top + Command1.Height / 2 + 405) \ 15
SetCursorPos x1, y1 '将鼠标移动到 Command1上面
End Sub
Private Sub Command1_Click()
Randomize
Dim x1&, y1&
Private Sub Form_Load()
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '窗体置于屏幕中心

vb键盘与鼠标事件过程

vb键盘与鼠标事件过程

11.1.2 KeyDown和KeyUp事件
shift参数项返回一个整数,该整数相应于 〈Shift〉、 〈Ctrl〉和〈Alt〉键的状态。shift参数等于1、2和4分别表 示〈Shift〉、〈Ctrl〉和〈Alt〉键被按下,而三数的部分 和表示三个按钮部分地被同时按下。因此,可结合该参数 项来判断输入字母的大小写。
应 当 使 用 KeyDown 和 KeyUp 事 件 过 程 来 处 理 任 何 不 被 KeyPress识别的击键,诸如:功能键、编辑键、定位键以 及 任 何 这 些 键 和 键 盘 换 档 键 的 组 合 等 。 与 KeyDown 和 KeyUp事件不同的是,KeyPress不显示键盘的物理状态, 而只是传递一个字符。
KeyPreview 属性返回或设置一个值,以决定是否在控件 的键盘事件(KeyDown、KeyUp 和 KeyPress)之前激活 窗体的键盘事件。其语法为:
对象名.KeyPreview [= boolean]
其中,Boolean是布尔表达式,指定如何接收事件:当取 值为False(缺省值)时,活动控件接收键盘事件,而窗体 不接收;当取值为True时,窗体先接收键盘事件,然后是 活动控件接收事件。
表11-1 MousePointer属性值的描述
指针形状 值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 99
常数 vbDefault vbArrow vbCrosshair vbIbeam vbIconPointer vbSizePointer vbSizeNESW vbSizeNS vbSizeNWSE vbSizeWE vbUpArrow vbHourglass vbNoDrop vbArrowHourglass vbArrowQuestion vbSizeAll vbCustom

vb键盘鼠标事件

vb键盘鼠标事件
补充
鼠标事件与键盘事件
鼠标事件
MouseMove 当鼠标指针移动到屏幕新位置时发生
MouseDown 按下任意鼠标键按钮时发生MouseUp释放任意鼠标键按钮时发生
MouseUp事件的语法格式 Sub 对象名_MouseUp(Button%,Shift%,X%,Y%)
Button参数是表示按下或松开鼠标哪个按钮 值 说明 1 左键被按下 2 右键被按下 4 中间按钮被按下
参数X, Y是鼠标指针的位置,通过 X 和 Y参数返回一个 指定鼠标指针当前位置的数,X和Y的值是使用该对象的坐 标系统表示鼠标指针当前位置。
键盘事件
KeyPress 按下对应某ASCII 字符的键。 KeyDown 按下键盘的任意键。 KeyUp 释放键盘的任意键只有获得焦点的对象
才能够接受键盘事件。
格式: Sub Object_KeyDown(KeyCode%, Shift As Integer) Sub Object_KeyUp(KeyCode%, Shift As Integer)
KeyPress 事件
在按下与ASCII字符对应的键时将触发KeyPress 事件。
Sub 对象名_KeyPress (KeyAscii As Integer)
KeyAscii 参数返回对应于ASCII字符代码的整型数 值。
KeyDown 和 KeyUp 事件
当一个对象具有焦点时按下(KeyDown) 或 松开 ( KeyUp ) 一个键时发生。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档