joynter |
Отправлено: 15.11.2004, 11:55 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
как это осуществить? или как узнать код двух нажатых клавиш?
(что-то типа ctrl+any_key <=> wParam = ...)
CODE |
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam ) // keystroke-message information
{
if(code < 0)
return CallNextHookEx(hHook,code,wParam,lParam);
else
if(GetKeyState(VK_CONTROL) && GetKeyState(any_key) && isHook == false)
{
isHook = true;
ShowMessage("done");
return CallNextHookEx(hHook,code,wParam,lParam);
}
else
{
isHook = false;
return CallNextHookEx(hHook,code,wParam,lParam);
}
}
|
Отредактировано joynter — 15/11/2004, 12:57 |
|
Ajgor |
Отправлено: 15.11.2004, 17:15 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Посмотри API функцию GetKeyboardState(). Ей передаётся буфер который заполняется текущим состоянием клавиатуры. Потом можеш проследить которые из них нажаты. Хоть все |
|
serg128 |
Отправлено: 15.11.2004, 18:54 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 46
|
GetAsyncKeyState(int KeyKode)
и ненадо никаких хуков. |
|
NedioVic |
Отправлено: 22.01.2005, 05:39 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Скачай пакет компонент LMD-Tools Special Edition (C++ Builder 6.0) с сайта http://www.torry.net
После установки на вкладке LMD Sys (палитры компонент) есть классный компонент TLMDGlobalHotKey — классно работает, пробовал — советую
Отредактировано NedioVic — 22/01/2005, 06:50 |
|
Gal |
Отправлено: 24.01.2005, 12:54 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
void __fastcall TMainForm::ListViewKeyDown(TObject *Sender,
WORD &Key, TShiftState Shift)
{
TShiftState ShiftTest;
ShiftTest.Clear();
ShiftTest << ssCtrl;
if ((Shift == ShiftTest) && (Key == 65))
{
...........................................
}
}
|
|
xim |
Отправлено: 24.01.2005, 14:41 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Немного переделал начальный вариант:
CODE |
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam ) // keystroke-message information
{
if(code>=0&&
GetKeyState(VK_CONTROL)<0&&
any_key==WORD(wParam)&&
isHook == false)
{
isHook = true;
ShowMessage("done");
}else isHook = false;
кeturn CallNextHookEx(hHook,code,wParam,lParam);
}
|
Первоначальный вариант работал менее строго:
CODE |
...GetKeyState(VK_CONTROL) && GetKeyState(any_key)...
| |
|