按下HotKey以叫起视窗
来源:cww
如何做到在任何一个程式之下,按下某个HotKey组合键,便将我们的视窗Activate起来,
这便得使用 WM_SETHOTKEY 来达成

WM_SETHOTKEY所需的叁数如下:
wParam = (WPARAM) MAKEWORD(vkey, modifiers)   
lParam = 0

vkey 指的是virtual-key code,它是在低位元组,modifier是以下四种键的组合,它是
在高位元组。

HOTKEYF_ALT     ALT key
HOTKEYF_CONTROL CTRL key
HOTKEYF_EXT     Extended key
HOTKEYF_SHIFT   SHIFT          

SendMessage()的传回值有以下的意义:
-1  hotkey 设定不对
 0  hWnd的指定有误
 1  成功,而且没有其他window的HotKey与之相同
 2  成功,但有其他window的HotKey与之相同
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_SETHOTKEY = &H32
Const HOTKEYF_SHIFT = &H1
Const HOTKEYF_CONTROL = &H2
Const HOTKEYF_ALT = &H4
Const HOTKEYF_EXT = &H8

Private Type tInteger
  aint As Integer
End Type
Private Type t2Byte
  lByte As Byte
  hByte As Byte
End Type
Private ii As tInteger
Private bb As t2Byte

Private Sub Command1_Click()
Dim wParam As Long, I As Long

'设定ctl-shift-T 为该window的hotkey
bb.hByte = HOTKEYF_CONTROL Or HOTKEYF_SHIFT
bb.lByte = vbKeyT
LSet ii = bb

wParam = CLng(ii.aint)
I = SendMessage(Me.hwnd, WM_SETHOTKEY, wParam, 0)
If I = 1 Then
   Debug.Print "Ctl-Shift-T 为hotkey"
Else
   If I = 2 Then
     Debug.Print "有其他Window也用Ctl-Shift-T当Hotkey"
   Else
     Debug.Print "指定失败"
   End If
End If
End Sub