VB能全局监视热键触发事件的代码怎么写

作者&投稿:星秋 (若有异议请与网页底部的电邮联系)
在VB触发事件中写段代码~

Private Sub Worksheet_Change(ByVal Target As Range)
Static kk As Boolean
If kk Then
kk = False
Exit Sub
End If
If Target.Column 8 Then Exit Sub
Select Case Target.Value
Case 88
kk = True
Target = "张三"
Case 66
kk = True
Target = "李四"
Case 86
kk = True
Target = "王五"
Case Else
MsgBox "没有指定编号!"
Target.Select
End Select
End Sub

不知道你说的"触发"怎么理解,如果是模拟按键的话可以用VB6的SendKeys "{F1}" 这样的写法,如果是为了获得用户的f1-f12按键事件,你可以用控件的keydown或keyUp事件,在其中判断Keycode=VbkeyF1这样写就是 判断用户按F1了,其它的键当然你应该会改了

方法有多种,介绍一种简单的给你

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'API声明,这是判断某个按键是否按下,如果按下返回值不为0,如果没有按下返回值为0
Dim flag As Boolean

Private Sub Form_Load()
flag = False
End Sub

Private Sub Timer1_Timer() '用时钟不断判断,周期100够了

'这是按着不断触发事件
'If GetAsyncKeyState(vbKeyA) <> 0 Then '按下a,vbkeya 看下面

'Form1.Left = Form1.Left - 100

'Else '没有按下

'End If

'以下是按一次只会触发一次事件
If GetAsyncKeyState(vbKeyA) <> 0 Then '按下a,vbkeya 看下面

If flag = False Then '第一次通过,按着A第二次以上跳过
Form1.Left = Form1.Left - 100
End If
flag = True

Else '没有按下

flag = False '不按A恢复

End If

End Sub

'-----------------------------以下为按键常量参考

'常数 值 描述
'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 键


VB能全局监视热键触发事件的代码怎么写
方法有多种,介绍一种简单的给你 Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'API声明,这是判断某个按键是否按下,如果按下返回值不为0,如果没有按下返回值为0 Dim flag As Boolean Private Sub Form_Load()flag = False End Sub Private Sub ...

c#模仿酷狗怎么实现全局热键控制
RegisterHotKey(Handle, 100, 2, Keys.A); \/\/定义热键为Alt+Tab,这里实现了屏幕系统Alt+Tab键 RegisterHotKey(Handle, 200, 2, Keys.B); \/\/注册2个热键,根据id值100,200来判断需要执行哪个函数 } protected override void WndProc(ref Message m)\/\/监视Windows消息 { const int WM_HOTKEY ...

仲巴县19370899027: 寻找VB全局热键的代码 -
别胡博来: 第一步: '新建一个窗口,将以下代码复制进去 注册热键为:'Ctrl+Alt+D'VB交流群:1422505 欢迎加入 Private Sub Form_Load() Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) ret = SetWindowLong(Me.hwnd, ...

仲巴县19370899027: vb怎么设置一个全局热键? -
别胡博来: 现在VB中加入一个时钟控件,然后输入以下代码::Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Dim key1 As Integer Const keycode1 As Integer = 121 Private Sub Form_Load() key1 = GetKeyState...

仲巴县19370899027: VB如何设置全局热键
别胡博来: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'API If GetAsyncKeyState(vbKeF5) Then '代码 MsgBox "你按下了F5键" END IF

仲巴县19370899027: vb6.0 怎样用按键控制command? -
别胡博来: 1.把command1的Default属性设置为True就OK了2.全局热键盘就是无论程序有没有焦点也能响应按键操作,如下面的一个例子 新建立一个FORM~ Private Sub Form_Load() Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_...

仲巴县19370899027: VB全局热键 -
别胡博来: 主窗体代码如下:Option Explicit'程序启动时注册功能热键F12 Private Sub Form_Load() Dim Modifiers As Long preWinProc = GetWindowLong(Me.hWnd, GWL_WNDPROC) SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc ...

仲巴县19370899027: vb如何把事件不光局限在form中? -
别胡博来: 度一下 “vb 全局热键”很多示例代码.Enabled = true End Sub Private Sub Timer1_Timer() If GetAsyncKeyState(vbKeyMenu) And GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyUp) Then ' (ByVal vkey As Long) As Integer '按下...

仲巴县19370899027: VB如何写全局热键? 详细见下. 后追分 -
别胡博来: a和Ctrl+A功能是一样的嘛,只提供个思路:在程序中设置一个定时器,时间100ms,定时器检测是否有a或Ctrl+A按下,有则Unload Me 这样,即使窗口已经Hide起来时,只要程序没退出,代码就有效

仲巴县19370899027: vb全局响应键盘事件(程序visible=flase的时候也能响应消息)
别胡博来: 希望对你有帮助!如果程序始终在活动状态(后台只是隐藏界面的话)在菜单里添加功能菜单(可隐藏)实现功能form1.visible=true,然后给菜单定义快捷键F5如果后台后程序不是活动驻留状态就复杂了,要用API截取系统消息函数,再做出相应动作,

仲巴县19370899027: vb.net 全局热键 -
别胡博来: 见下面的代码 Public Class Form1 Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean Public Declare...

仲巴县19370899027: vb 获取热键 -
别胡博来: 将Form.KeyPreview设为True,再在Form_KeyDown、Form_KeyUp中接收,这两个函数的KeyCode与按键有关,自己调试尝试一下,即可知道方向键和F1-F12等键的KeyCode.回答得不错吧?我以前自己悟出来的,也使用过.对mark_david的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网