· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как установить резидентн. обработчик нажатия ENTER

Посл.отвђт Сообщенiе


Дата: Мар 27, 2003 14:12:54

Помогите простым примерчиком по установке резидентного обработчика определенного сочетания клавиш (хочу разобраться).


Дата: Мар 28, 2003 03:47:28

OS?


Дата: Мар 28, 2003 09:22:02

OS = WIN98 или WIN2000 (извините что не уточнил сразу).


Дата: Мар 28, 2003 09:33:15

Извините ,скорее OS = WIN98 и WIN2000


Дата: Мар 28, 2003 10:53:07

Я конечно мог догадаться, т.к. тема в ветке WASM.WIN32, но меня ввел в заблуждение DOS'овский термин "резидентный обработчик".

Под win32 самый простой вариант - это RegisterHotKey. Чуть сложнее (т.е. требует более аккуратного программирования) устанавливать hook на клавиатуру – SetWindowsHookEx + WH_KEYBOARD_LL / WH_KEYBOARD_LL.


Дата: Мар 28, 2003 14:05:49

WH_KEYBOARD_LL только под NT/2000/XP.


Дата: Мар 31, 2003 04:20:43

Хотел написать WH_KEYBOARD / WH_KEYBOARD_LL.


Дата: Мар 31, 2003 09:54:44

... можно примерчик с RegisterHotKey
или с установкой hook на клавиатуру ? :)


Дата: Мар 31, 2003 10:58:58

1. RegisterHotKey:
[code]
// оконная процедура
LRESULT CALLBACK
MyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static BOOL bIsReg = FALSE;
static int id = 1;

switch (msg)
{
case WM_CREATE:
bIsReg = RegisterHotKey(hWnd, id, 0, VK_RETURN);
if (FALSE == bIsReg)
MessageBox(hWnd, TEXT("RegisterHotKey failed."), TEXT("hi"), MB_OK);
return 0;

case WM_HOTKEY:
MessageBox(NULL, TEXT("WM_HOTKEY"), TEXT("hi"), MB_OK);
break;

case WM_DESTROY:
if (FALSE != bIsReg)
{
bIsReg = FALSE;
UnregisterHotKey(hWnd, id);
}
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hWnd, msg, wParam, lParam);
}
[/code]


2. SetWindowsHookEx:
Посмотрите Using Hooks там внизу Show Example.


Дата: Мар 31, 2003 13:36:05

Спасибо. Пошел разбираться :)


Дата: Апр 10, 2003 02:14:08

Это можно сДелать и без хуков, API GetAsyncKeyState, при событии таймера.... легче некуда....


Дата: Апр 10, 2003 04:09:29

RUBan0k
при событии таймера.... легче некуда....
Тогда уж лучше в отдельном потоке.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.087