📄 keyhook.bas
字号:
Attribute VB_Name = "KeyHook"
Option Explicit
'=====================================================
'定义快捷键
'下面的快捷键存在冲突:(
'=====================================================
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 UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Const WH_KEYBOARD = 2
Public Const VK_SHIFT = &H10
Public Const VK_CONTROL = &H11
Public Const VK_ATTN = &HF6
Global hHook As Long
Global KeyUpDownEnable As Boolean
Global bDisableSortKey As Boolean
Function KeyboardProc(ByVal idHook As Long, ByVal lParam As Long, ByVal wParam As Long) As Long
Dim KeyState As Boolean
If idHook < 0 Or bDisableSortKey Then
'调用下一个Hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
KeyboardProc = CallNextHookEx(hHook, idHook, 1, 0)
KeyState = (GetKeyState(VK_CONTROL) And &HF0000000) '取得Ctrl键的状态
Select Case lParam
'=====================================================
'显示控制台 Ctrl + W
'=====================================================
Case Asc("W") And KeyState
'SetWindowPos Form1.hWnd, -2, 0, 0, 0, 0, 3 '取消总在最前面
ControlForm.Show
ControlForm.WindowState = 0
'=====================================================
'显示播放区 Ctrl + Y
'=====================================================
Case Asc("Y") And KeyState
If Play.ShockwaveFlash1.Movie <> "" Then
Play.Show
Play.WindowState = 0
End If
'=====================================================
' 总在最前面 Ctrl + T
'=====================================================
Case Asc("T") And KeyState
If Play.ShockwaveFlash1.Movie <> "" Then
If ControlForm.onTop.Checked = True Then
SetWindowPos Play.hwnd, -2, 0, 0, 0, 0, 3
ControlForm.onTop.Checked = False
Else
SetWindowPos Play.hwnd, -1, 0, 0, 0, 0, 3
ControlForm.onTop.Checked = True
End If
End If
'=====================================================
'F3 搜索/停止搜索
'=====================================================
Case 114 'F3
ControlForm.SearchTimer.Enabled = True
'=====================================================
' Ctrl + F 全屏
'=====================================================
Case Asc("F") And KeyState
If isFullScreen = False Then
Call ControlForm.doFullScreen
End If
'=====================================================
' Esc 返回全屏
'=====================================================
Case 27
If isFullScreen = True Then
Call ControlForm.doFullScreen
End If
'=====================================================
Case 37
If UCase(Screen.ActiveControl.Name) = UCase("ShockwaveFlash1") And Play.ShockwaveFlash1.Movie <> "" Then
Play.ShockwaveFlash1.Back
End If
'=====================================================
Case 39
If UCase(Screen.ActiveControl.Name) = UCase("ShockwaveFlash1") And Play.ShockwaveFlash1.Movie <> "" Then
Play.ShockwaveFlash1.Forward
End If
'=====================================================
Case Asc("S")
If Play.ShockwaveFlash1.Movie <> "" And InStr(UCase(Screen.ActiveControl.Name), "TEXT") = 0 Then
Play.ShockwaveFlash1.Stop
End If
'=====================================================
Case Asc("P")
If Play.ShockwaveFlash1.Movie <> "" And InStr(UCase(Screen.ActiveControl.Name), "TEXT") = 0 Then
Play.ShockwaveFlash1.Play
ControlForm.SpeedTimer.Enabled = False
End If
End Select
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -