VB如何获取键盘事件??
发布网友
发布时间:2022-07-25 18:38
我来回答
共1个回答
热心网友
时间:2023-10-14 12:37
以下程序包含Mole1和Form1,保存在D:\A.Txt中。此程序打开后不论有无焦点,都会进行记录。程序关闭后,你可以在那个Txt中看到结果。
=======Mole1.Bas=========
Option Explicit
Public Type EVENTMSG
vKey As Long
sKey As Long
flag As Long
time As Long
End Type
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
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
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public mymsg As EVENTMSG
Public Const WH_KEYBOARD_LL = 13
Public Const WM_KEYDOWN = &H100
Public hHook&, i%, appStr$, SBUF$, pos1$(), pos2$()
Const KBH_MASK = &H20000000
Sub ints()
appStr = "从" & Now & "开始键盘记录如下..." & vbCrLf
SBUF = "96_0|97_1|98_2|99_3|100_4|101_5|102_6|103_7|104_8|105_9|106_*|107_+|109_-|110_.|111_/|13_Enter|144_NumLock|65_A|66_B|67_C|68_D|69_E|70_F|71_G|72_H|73_I|74_J|75_K|76_L|77_M|78_N|79_O|80_P|81_Q|82_R|83_S|84_T|85_U|86_V|87_W|88_X|89_Y|90_Z48_0|49_1|50_2|51_3|52_4|53_5|54_6|55_7|56_8|57_9|192_`|189_-|187_=|220_\|8_BACKSpace|44_Print|45_InSert|46_Delete|145_ScrollLock|36_Home|35_End|19_PauseBreak|33_PageDown|34_PageUp|38_上|40_下|37_左|39_右|27_Esc|112_F1|113_F2|114_F3|115_F4|116_F5|117_F6|118_F7|119_F8|120_F9|121_F10|122_F11|123_F12|9_TAB|20_CapsLock|160_左Shift|162_左Ctrl|91_左Win|13_右Enter|161_右Shift|92_右Win|93_右List|163_右Ctrl"
pos1 = Split(SBUF, "|"): ReDim pos2$(256)
For i = 0 To UBound(pos1) - 1
pos2(Val(pos1(i))) = Mid(pos1(i), InStr(1, pos1(i), "_") + 1)
Next
End Sub
Public Function MyKBHook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If ncode = 0 Then
If wParam = WM_KEYDOWN Then
CopyMemory mymsg, ByVal lParam, Len(mymsg)
Write #1, pos2(mymsg.vKey)
End If
End If
MyKBHook = CallNextHookEx(hHook, ncode, wParam, lParam)
End Function
========Form1.Frm=============
Option Explicit
Private Sub form_Load()
Open "d:\a.txt" For Output As 1 '这里是记录文件路径
KeyPreview = 1: ScaleMode = 3: AutoRedraw = 1
Mole1.ints
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyKBHook, App.hInstance, 0)
If hHook = 0 Then End
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnhookWindowsHookEx(hHook)
Close
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then Unload Me
End Sub
参考资料:http://zhidao.baidu.com/question/63838949.html?si=2
vb.net中如何执行键盘事件?
执行键盘事件方法如下:第一步,点击VS工具。第二步,打开后,新建一个Windows窗体应用程序。第三步,请看右下方Form的属性栏。第四步,双击KeyDown。第五步,输入提示按键代码,如图所示。第六步,再次输入代码,设置属性KeyPreview为true。第七步,运行程序,按下举例F5,则会弹出提示,表明已经成功获。
VB如何在窗体中显示按下键盘按键的字母
VB在窗体中显示按下键盘按键的字母可以通过Form_KeyDown获取按键的KeyCode,然后再把KeyCode转换为相应的键的名字。代码如下:Private Sub Form_Load() Me.KeyPreview = True '使窗体可以获取键盘事件End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Print KeyCodeToStr(Key...
vb.net中如何执行键盘事件?
执行键盘事件方法如下:第一步,点击VS工具。第二步,打开后,新建一个Windows窗体应用程序。第三步,请看右下方Form的属性栏。第四步,双击KeyDown。第五步,输入提示按键代码,如图所示。第六步,再次输入代码,设置属性KeyPreview为true。第七步,运行程序,按下举例F5,则会弹出提示,表明已经成功获。
vb.net如何捕获某窗体的键盘事件
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyEscape Then Unload Me End Sub
VB如何设置按键事件
可以通过GetAsyncKeyState这个API函数和Timer控件来实现 可以参考一下:新建一个窗体 Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Const VK_F2 = &H71 Private Sub Timer1_Timer()If GetAsyncKeyState(VK_F2) Then Label1.Caption = "你按了键盘...
vb 如何按下键盘某键后触发事件
给你个VB键盘钩子代码 模块中:Public Function LowLevelKeyboardProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'Dim p As PKBDLLHOOKSTRUCT Dim strKey As String If ncode = HC_ACTION Then Select Case wParam Case WM_KEYDOWN CopyMemory p, ByVal ...
VB6.0中,如何键盘触发键盘事件(如:按下h键触发的同时触发回车键)_百度...
先编辑一个窗体或文本框的键盘事件,在过程中,用 if 语句来判断输入的是不是h键,键盘上的每个健都有一个Ascii 码来对应,大写h 是72小写h 是104,如果是的话就让它调用回车键的事件过程就搞定啦!回车键的事件代码你自己想实现什么功能就编辑什么就是了!
VB事件的键盘事件
键盘事件主要有以下几种:(1)KeyDown:当键盘上某键被按下去时发生。(2)KeyUp:键盘上的键抬起来时发生。(3)KeyPree:此事件发生在键盘被按下后和字符被显示出来之前发生。对于键盘事件,相对来说KeyDown事件和KeyUp事件使用比较少,通常情况下对KeyPress事件编程较多,因为此事件注重键盘被按下的是...
用VB 向指定的程序窗口发键盘事件该如何编写?
方法1: 用 SendKeys 语句 AppActivate "接收键盘事件的窗口标题" ' 激活指定窗口 SendKeys "A", True '发送字符 A 方法2: 用 API 函数 这个方法实现起来较复杂,给你一个思路:用 FindWindow 查找特定标题的窗口,获得该窗口的句柄,用 SendMessage 向该窗口发送键盘消息。Declare Function Find...
VB中GetAsyncKeyState函数,得到键盘按键,清除键盘记录!
If (GetAsyncKeyState(VK_SPACE) And &H8000) = &H8000 Then Call 事件A 还有一个API函数GetKeyState是只检测按键的当前状态的,但仍然要检测位15是否为1(位0为1表示开关键打开,即CapsLock、NumLock、ScrollLock键):If (GetKeyState(VK_SPACE) And &H8000) = &H8000 Then Call 事件A ...