功能:按下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