功能:按下HOME鍵彈出記事本,按下END彈出計算器。
以下內容放在模塊里面
Option Explicit
'=================================================================
'作者:EnCaL
'時間:2011.10.10
'用途:該模塊用於注冊熱鍵(END,HOME)
'www.encalyk.com
'=================================================================
Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Public Const WM_HOTKEY = &H312
Public RHK_HOME_ID, RHK_END_ID As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public preWinProc As Long
Public Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
Select Case (wParam)
Case RHK_HOME_ID:
Shell "notepad", vbNormalFocus
Case RHK_END_ID:
Shell "calc"
End Select
End If
'與form_load中的ADDRESSOF WNDPROC對應
wndproc = CallWindowProc(preWinProc, hWnd, Msg, wParam, lParam)
End Function
以下內容放在窗體里
'=================================================================
'作者:EnCaL
'時間:2011.10.10
'用途:改鍵程序
'www.encalyk.com
'=================================================================
Private Sub Form_Load()
preWinProc = GetWindowLong(Me.hWnd, GWL_WNDPROC) '獲得窗口過程的地址,或代表窗口過程的地址的句柄
Call SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf wndproc)
'注冊home鍵
RHK_HOME_ID = 181
RHKmodifier = 0
RHKvk = vbKeyHome
RegisterHotKey Me.hWnd, RHK_HOME_ID, RHKmodifier, RHKvk
'注冊end鍵
RHK_END_ID = 443
RHKvk = vbKeyEnd
RegisterHotKey Me.hWnd, RHK_END_ID, RHKmodifier, RHKvk
End Sub