上一篇 | 下一篇

按下HotKey以叫起视窗

发布: 2008-6-26 09:04 | 作者: admin | 来源: | 查看: 0次

如何做到在任何一个程式之下,按下某个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

字号: | 推荐给好友

评分:0

我来说两句