登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

miaozk2006

点滴积累与收藏:关于技术,关于生活

 
 
 

日志

 
 

VB 两种方法实现热键  

2013-01-30 21:38:23|  分类: 编程-VB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

方法一:

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

'添加个Timer控件 名字为:Timer1
'Interval属性设为100
Private Sub Timer1_Timer()
If GetAsyncKeyState(vbKeyQ) Then
Print "你按了Q"
End If
End Sub

方法二:

'模块代码

Private Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

Private 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

Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)

Private Type PKBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
Time As Long
dwExtraInfo As Long
End Type

Private Const WM_KEYDOWN = &H100
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYUP = &H105

Private Const HC_ACTION = 0
Private Const WH_KEYBOARD_LL = 13
Private lngHook As Long

Public Function HotKey(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim p As PKBDLLHOOKSTRUCT
If nCode = HC_ACTION Then
Select Case wParam
Case WM_KEYDOWN, WM_SYSKEYDOWN
Call CopyMemory(p, ByVal lParam, Len(p))
If p.vkCode = vbKeyQ Then
Form1.Print "你按了Q"
End If
Case Else

End Select
End If
Call CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)
End Function

Public Sub HooK()
lngHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf HotKey, App.hInstance, 0)
End Sub

Public Sub UnHooK()
Call UnhookWindowsHookEx(lngHook)
End Sub

摘自:网络整理

VB相关


VB 读写TXT文本文件函数

VB 提取TextBox 文本框中指定一行字符串

VB 获取汉字拼音的首字母

VB 汉字字符串转换成拼音

VB判断指定名字的进程是否存在函数

VB 两种方法实现热键

VB 使用SendMessage枚举文件与目录

VB 二进制数组与十六进制字符串相互转换

VB 二进制数据读写实例

VB 进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转

VB 判断是否文本文件

VB 读取UTF-8编码文件函数

VB 按指定编码格式写入文本文件

VB UTF-8 URL编码函数

VB 实现UTF-8 GB2312互转

VB 设置ListView中指定一行的背景颜色

VB SendMessage向其他程序窗口发送字符串消息实例

VB Listview导出到CSV文件函数

vb卸载所有窗体

VBNull, Empty, Nothing, and vbNullString的区别

利用API函数计算程序运行时间VB

获取快捷方式原文件路径vb路径

利用VB函数Dir()实现递归搜索目录

VB数组的清除和重新定义

RtlAdjustPrivilege来调整进程权限(VB6.0代码)

获取对象的接口信息(方法/属性/事件)(VB6代码)

VB6中给数组赋值的限制

[vb]一些窗口消息的详解

VB直接播放EXE文件中的声音文件

VB中利用CopyMemory使用指针

VB读写注册表的三种方法

[VB]SaveSetting 语句 和 DeleteSetting 语句

VB APP对象属性一览表 + 灵活使用VBAPP对象

[vb]SendMessageA函数

使用VB绘制抛物线动画曲线

关于vb中的容器

[vb]利用WScript.Shell对象隐藏cmd命令行运行

浅析VB For Each.Next语句

VB中窗体模块、标准模块、类模块的区别

引用 VB类模块

VB中什么是类,类模块有什么作用

VB SendKeys 语句

VB 全局热键

VB轻松调用其他程序

vb读取txt文件到textbox

如何去优化你的VB程序3

如何去优化你的VB程序2

如何去优化你的VB程序1

[VB]在状态栏中显示帮助信息

[VB]把屏幕保存为图像

Mp3Play.ocx控件让音乐之声响起来


更多精彩>>>
  评论这张
 
阅读(1030)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018