- 浏览: 180065 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
xiangyufangai:
很好很强大膜拜中哈哈!!
VB 两个字符串处理函数(类似Left/Mid/Right/Split的结合) -
hellohank:
这个……叫摘要算法,不叫加密算法~
Java实现的加密工具类(支持MD5和SHA) -
NIUCH1029291561:
接口有问题奥
网银在线支付接口和应用 -
yeuego:
能幫你就行了
MySQL索引分析 -
ForgiDaved:
很给力的介绍。记得前段时间给一个系统加功能,设计的表没有 ...
MySQL索引分析
Option Explicit
Private Declare Function SetWindowsHookEx _
Lib "user32" _
Alias "SetWindowsHookExW" (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 Function CallNextHookEx _
Lib "user32" (ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" (ByVal Destination As Long, _
ByVal Source As Long, _
ByVal Length As Long)
Private Type KBDLLHOOKSTRUCT
VKCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Const VK_LSHIFT = &HA0
Private Const VK_RSHIFT = &HA1
Private Const VK_LCONTROL = &HA2
Private Const VK_RCONTROL = &HA3
Private Const VK_LMENU = &HA4 'MENU=ALT
Private Const VK_RMENU = &HA5
Private Const HC_ACTION = &H0
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Dim hHook As Long
Dim CtrlIsPressed As Boolean
Dim ShiftIsPressed As Boolean
Dim AltIsPressed As Boolean
Public Type HotKeyInfo
IncludeCtrl As Boolean
IncludeShift As Boolean
IncludeAlt As Boolean
UserKey As String * 1
End Type
Private Type UsrHotKeyInfo
UserInfo As HotKeyInfo
IsInUse As Boolean
End Type
Dim savedHotKeys() As UsrHotKeyInfo
Public Sub HotKey_Process(ByVal KeyVKCode As Long, ByVal nAction As Long)
If ((KeyVKCode = VK_LCONTROL) Or (KeyVKCode = VK_RCONTROL)) Then
CtrlIsPressed = (nAction = WM_KEYDOWN)
GoTo SubProc_Exit
End If
If ((KeyVKCode = VK_LSHIFT) Or (KeyVKCode = VK_RSHIFT)) Then
ShiftIsPressed = (nAction = WM_KEYDOWN)
GoTo SubProc_Exit
End If
If ((KeyVKCode = VK_LMENU) Or (KeyVKCode = VK_RMENU)) Then
AltIsPressed = (nAction = WM_KEYDOWN)
GoTo SubProc_Exit
End If
If (nAction = WM_KEYUP) Then Call HotKeyProc(PressedHotKeyIndex(KeyVKCode))
'CtrlIsPressed = False: ShiftIsPressed = False: AltIsPressed = False
SubProc_Exit:
End Sub
'ret val=index of hotkey
Public Function AddHotKey(ByRef addKeyInfo As HotKeyInfo) As Integer
Dim newInd As Integer
Dim I As Integer
Dim bFound As Boolean: bFound = False
For I = LBound(savedHotKeys) To UBound(savedHotKeys)
If (savedHotKeys(I).IsInUse = False) Then
newInd = I: bFound = True
Exit For
End If
Next
If (Not bFound) Then
newInd = UBound(savedHotKeys) + 1
ReDim Preserve savedHotKeys(newInd)
End If
With savedHotKeys(newInd)
.UserInfo = addKeyInfo
.UserInfo.UserKey = UCase(.UserInfo.UserKey)
.IsInUse = True
End With
End Function
Public Sub ClearHotKeyList()
Erase savedHotKeys
ReDim savedHotKeys(0)
End Sub
Public Sub DelHotKey(ByVal nIndex As Integer)
savedHotKeys(nIndex).IsInUse = False
End Sub
Private Function PressedHotKeyIndex(ByVal VKCode As Long) As Integer
PressedHotKeyIndex = -1
Dim newInd As Integer
Dim I As Integer
Dim bFound As Boolean: bFound = False
Dim strPressedKey As String: strPressedKey = UCase(Chr(VKCode))
For I = LBound(savedHotKeys) To UBound(savedHotKeys)
With savedHotKeys(I)
If (.IsInUse = True) Then
If ((.UserInfo.IncludeAlt = AltIsPressed) And _
(.UserInfo.IncludeCtrl = CtrlIsPressed) And _
(.UserInfo.IncludeShift = ShiftIsPressed) And _
(.UserInfo.UserKey = strPressedKey)) _
Then
PressedHotKeyIndex = I: GoTo Func_Exit
End If
End If
End With
Next
Func_Exit:
End Function
Private Sub HotKeyProc(ByVal nIndex As Integer)
If (nIndex > -1) Then
With frmFunctionSelect
Select Case nIndex
Case 0 'HotKey 0 Pressed
'what can i do for u?
End Select
End With
End If
End Sub
Public Function DisableKbdHook() As Boolean
'Debug.Print "hHook: "; hHook
hHook = UnhookWindowsHookEx(hHook) - 1
DisableKbdHook = (hHook = 0)
End Function
Public Function EnableKbdHook() As Boolean
'Debug.Print "hHook: "; hHook
If (hHook <= 0) Then hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
EnableKbdHook = (hHook <> 0)
End Function
Private Function LowLevelKeyboardProc(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If (nCode <> HC_ACTION) Then
LowLevelKeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
Exit Function
End If
Call HotKey_Process(GetKeyVKCode(lParam), wParam)
LowLevelKeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam): GoTo Exit_Func
Exit_Func:
End Function
Private Function GetKeyVKCode(ByVal memAddr As Long) As Long
Dim curHs As KBDLLHOOKSTRUCT
Call CopyMemory(VarPtr(curHs), ByVal memAddr, Len(curHs))
GetKeyVKCode = curHs.VKCode
End Function
Private Function GetKeyScanCode(ByVal memAddr As Long) As Long
Dim curHs As KBDLLHOOKSTRUCT
Call CopyMemory(VarPtr(curHs), ByVal memAddr, Len(curHs))
GetKeyScanCode = curHs.scanCode
End Function
发表评论
-
vb 启动外部程序并且模拟鼠标点击
2011-03-09 13:28 1244Imports System.Runtime.InteropS ... -
VB 列出SQL数据库中所有表及字段信息
2011-03-09 13:24 1208程序思想:用Select name From sysobje ... -
VB 纯代码实现Timer控件的功能
2011-03-09 13:23 1422本博客有一篇类似的文章《VB 中运用 TimeSetEvent ... -
VB 控制音量
2011-03-09 13:22 1265'按钮一是音量增加,按钮二是音量减少,按钮三是静音切换. ... -
拦截 VB TextBox 双击消息
2011-03-09 13:22 975我们都知道在VB中TextBox默认是没有双击消息过程的(也就 ... -
VB 获取/设置屏幕分辨率
2011-03-09 13:21 1156Option ExplicitPrivate Decla ... -
VB 将数据快速导入EXCEL
2011-03-09 13:21 1078Public Function ToExcel()On ... -
VB 建立快捷方式
2011-03-09 13:20 813Private Declare Function fCr ... -
VB 获取快捷方式原文件路径
2011-03-09 13:20 955'此方法不需要引用IShellLink.Private ... -
VB 的一组字符串转换函数
2011-03-09 13:20 817Public Function chrConvert(s ... -
VB 在浏览目录时指定初始目录
2011-03-09 13:19 1133'VB也可以使用CallBack,下面是一个例子: '先 ... -
VB 获得鼠标滚轮的事件
2011-03-09 13:18 1030'窗体代码Private Sub Form_Load() ... -
VB 比较两组字符串
2011-03-09 13:18 1323【方法一】 StrComp(string1, Stri ... -
VB 用API下载文件实例
2011-03-09 13:17 822'########################### ... -
VB 窗口处理技巧大全
2011-03-09 13:17 809VB提供了API函数SetWindowLong和GetWind ... -
VB 实现屏幕右下角浮出式消息窗口,透明淡出效果。
2011-03-09 13:16 1032'任务栏高度[此部分相关代码转载自 枕善居]Privat ... -
VB Filter 函数用法
2011-03-09 13:16 2016例子1:Dim aa(10) As StringDim bbD ... -
VB 在EXPLORER进程崩溃之后重建托盘图标
2011-03-09 13:15 873重点为:向系统注册“TaskbarCreated”消息 ... -
Shell 调用程序后等待该程序结束后返回继续
2011-03-09 13:15 1261方法1: Private Declare Functi ... -
VB 最简单的WAV声音或音乐文件播放的代码
2011-03-09 13:14 1419'最简单的WAV声音或音乐文件播放的代码'API声明Pr ...
相关推荐
标签中的“wh_keyboard_vb”、“wh_keyboard_ll”、“vb__wh_keyboard_ll”和“屏蔽_热键”都与VB(Visual Basic)语言和`WH_KEYBOARD_LL`钩子的使用有关,表明这是一个使用VB来实现的键盘事件处理示例。 在压缩包...
在VB(Visual Basic)编程环境中,全局按键代码的实现是一个常用的功能,它允许开发者创建一个程序,该程序可以在任何活动的应用程序中响应特定的按键事件,实现自动化操作或快捷键功能。这种技术对于提高工作效率、...
设置热键通常需要定义一个WH_KEYBOARD_LL类型的全局键盘钩子,注册一个键盘事件处理函数,并在该函数内检查按键消息,判断是否为预设的热键组合。 全局钩子的实现需要注意几个关键点: 1. **线程安全**:由于钩子...
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardHookProc, Me.ModuleHandle, 0) ' 卸载钩子 UnhookWindowsHookEx(hHook) ``` 需要注意的是,由于VB6不支持低级(Low-Level)钩子,如键盘和鼠标钩子...
1. **钩子技术**:VB中实现全屏取词需要设置系统级别的钩子,例如WH_KEYBOARD_LL(低级键盘钩子)和WH_MOUSE_LL(低级鼠标钩子),来捕获全局的键盘和鼠标事件,以便在用户点击时获取屏幕上的文本。 2. **屏幕截图*...
标题中的".net实现网吧锁屏源码--屏蔽系统热键"指的是使用.NET框架开发的一款特殊软件,该软件的主要功能是在网吧环境下锁定计算机屏幕,并阻止用户通过系统热键(如Alt+Tab、Ctrl+Esc等)切换窗口或退出锁定状态。...
例如,通过安装WH_KEYBOARD_LL类型的全局HOOK,可以实时获取到键盘的按键事件,用于实现热键设置或其他键盘相关的功能。 总结,HOOK是Windows编程中的重要工具,它允许开发者深入参与到系统事件的处理中,从而实现...
这个函数需要传递参数,包括钩子类型(WH_KEYBOARD_LL表示低级键盘钩子),钩子处理函数的地址,以及一个线程ID等。钩子处理函数会在每次键盘事件发生时被调用,这时我们可以在函数内部判断是否需要屏蔽DEL+CTRL+ALT...