Cómo registrar teclas de acceso rápido globales de F1 a F8 en VB. Escriba el código en algún lugar. ¡Gracias!
Función de declaración privada SetWindowLong Lib "user32" alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long p>
Función de declaración privada GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Función de declaración privada CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc mientras, ByVal hwnd mientras, ByVal Msg mientras, ByVal wParam mientras, ByVal lParam mientras) Mientras
Función de declaración privada RegisterHotKey Lib "user32" (ByVal hwnd como Long, ByVal id As Long) As Long
Función de declaración privada RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fskey_Modifiers As Long, ByVal vk As Long) As Long
Función de declaración privada UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As LongConst WM_HOTKEY = amp H312
Const MOD_ALT = amp; Const MOD_CONTROL = amp; H2
Const MOD_ SHIFT = amp; H4
Const GWL_WNDPROC = (-4) 'Dirección de función de ventana Dim key_preWinProc As Long 'Se utiliza para guardar información de la ventana p>
Atenuar key_Modifiers mientras, key_uVirtKey mientras, key_idHotKey mientras, key_idHotKey mientras, key_idHotKey mientras, key_idHotKey mientras, key_idHotKey mientras, key_idHotKey mientras, key_idHotKey mientras key_idHotKey mientras
Dim key_IsWinAddress As Boolean ' Determina si se obtiene información de la ventana
Tecla de funciónWndproc(ByVal hwnd As
Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_HOTKEY Then
Seleccione Case wParam 'El valor de wParam es key_idHotKey
Caso 1 ' Active 3 teclas de acceso rápido y luego realice las acciones correspondientes a las 3 teclas de acceso rápido.
Caso 2
'MsgBox "bb"
'MsgBox "bb"
'MsgBox "bb"
'Caso 3 p>
'MsgBox "cc"
End Select
End If
'Entregar el mensaje en la ventana especificada
keyWndproc = CallWindowProc(key_preWinProc, hwnd, Msg, wParam, lParam)
Fin de funciónFunción SetHotkey( ByVal KeyId mientras, ByVal KeyAss0 como cadena, ByVal Acción como cadena)
Dim KeyAss1 como Long
Dim KeyAss2 como cadena
Dim i As Long
i = InStr(1, KeyAss0, ","")
If i = 0 entonces
KeyAss1 = Val(KeyAss0)
KeyAss2 = ""
De lo contrario
KeyAss1 = Derecha(KeyAss0, Len (KeyAss0) - i)
KeyAss2 = Izquierda(KeyAss0, i - 1)
Finalizar si
key_idHotKey = 0
key_Modifiers = 0
key_uVirtKey = 0
Si key_IsWinAddress = False Entonces 'Determine si necesita obtener información de la ventana. Si la obtiene repetidamente, el programa morirá cuando finalmente restaure la ventana.
'Registra la dirección del programa de ventana original
key_preWinProc = GetWindowLong(Form1.hwnd, GWL_WNDPROC)
'Reemplaza el programa de ventana original con un programa personalizado p>
SetWindowLong Form1.hwnd, GWL_WNDPROC, AddressOf keyWndproc
Finalizar si key_idHotKey = KeyId
Seleccionar acción de caso
Caso "Agregar"
Si KeyAss2 = "Ctrl" Entonces key_Modifiers = MOD_CONTROL
Si KeyAss2 = "Alt" Entonces key_Modifiers = MOD_ALT
Si KeyAss2 = "Alt" Entonces key_Modifiers = MOD_ALT Modificadores = MOD_ALT
Si KeyAss2 = "Shift" Entonces key_Modifiers = MOD_SHIFT
Si KeyAss2 = Entonces key_Modifiers = MOD_CONTROL MOD_ ALT
Si KeyAss2 = "Ctrl S
hift" entonces key_Modifiers = MOD_CONTROL MOD_SHIFT
Si KeyAss2 = "Ctrl Alt Shift" entonces key_Modifiers = MOD_ CONTROL MOD_ALT MOD_SHIFT
Si KeyAss2 = "Shift Alt" entonces key_Modifiers = MOD_SHIFT MOD_ALT p> p>
key_uVirtKey = Val(KeyAss1)
RegisterHotKey Form1.hwnd, key_idHotKey, key_Modifiers, key_uVirtKey 'Registrar la tecla de acceso rápido del sistema en la ventana
key_IsWinAddress = True 'No necesita obtenerlo nuevamente Información de la ventana
Caso "Del"
SetWindowLong Form1.hwnd, GWL_WNDPROC, key_preWinProc 'Restaurar información de la ventana
UnregisterHotKey Form1 .hwnd, key_uVirtKey = Val(KeyAss1)
Anular registro de tecla de acceso rápido hwnd, key_uVirtKey 'Anular registro de tecla de acceso rápido del sistema
key_IsWinAddress = True 'No es necesario volver a obtener información de la ventana
Caso "Del"< IsWinAddress = False 'Se puede obtener información de la ventana nuevamente
Selección final
Función final
Formulario original: Sub privado Form_Load()SetHotkey 1 , " Ctrl Alt, 112", "Agregar" 'Presiona Ctrl F1 para activar el programa especificado, el código Ascii de F1 es 112
'SetHotkey 2, 113, "Agregar" 'Presiona F2 para activar el programa especificado, el código Ascii de F2 es 113
'SetHotkey 3, "Ctrl Alt, 113", "Add" 'Presione Ctrl Alt F2 para activar el programa especificado. El código Ascii de F2 es 113End SubPrivate. Sub Form_Unload(Cancelar como entero)
SetHotkey 1, "", "Del" 'Debes salir del programa, de lo contrario el programa morirá
SetHotkey 2, "", "Del "
SetHotkey 3, "" , "Del"
La subtecla de acceso rápido final y otras teclas de acceso rápido definidas en el proceso Form_Load () se dan como tres ejemplos. También se pueden usar otras teclas de acceso rápido definido de manera similar.