15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Создаём горячие клавиши для приложения.

Автор: Wolfgang

Код модуля

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long

Declare Function DefWindowProc Lib "user32" _
Alias "DefWindowProcA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const WM_SETHOTKEY = &H32
Public Const WM_SHOWWINDOW = &H18
Public Const HK_SHIFTA = &H141 'Shift + A
Public Const HK_SHIFTB = &H142 'Shift * B
Public Const HK_CONTROLA = &H241 'Control + A
Public Const HK_ALTZ = &H45A

'Значение для комбинации клавишь должно быть
'объявлено в формате младший байт/старший байт

'В шестнадцатиричном виде число выглядит следующим образом:
'последние две цифры указывают букву (т.е.: 41 = a),
'а первый функциональную клавишу (т.е.: 01 = 1 = Shift)

 

Код формы

Private Sub Form_Load()
Me.WindowState = vbMinimized
'Пусть windows знает, какую горячую клавишу мы хотим
'установить для приложения, lParam здесь не используется
erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, _
HK_ALTZ, 0)
'Проверка на возможную ошибку
If erg& <> 1 Then
MsgBox "You need another hotkey", vbOKOnly, _
"Error"
End If

'Теперь скажем системе, что нужно делать, если нажата горячая
'клавиша -> показать окно!
'В данном случае wParam и lParam не используются

erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, _
0, 0)
End Sub

 

Когда пользователь нажмёт ALT+Z то появится Form1.