Клавиатура
Получаем символ, соответствующий виртуальной клавише:
Code: |
function GetCharFromVKey(vkey: Word): string; var keystate: TKeyboardState; retcode: Integer; begin Win32Check(GetKeyboardState(keystate)); SetLength(Result, 2); retcode := ToAscii(vkey, MapVirtualKey(vkey, 0), keystate, @Result[1], 0); case retcode of 0: Result := ''; 1: SetLength(Result, 1); 2: ; else Result := ''; end; end;
{ Использование: procedure TForm1.Edit1KeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage(GetCharFromVKey(Key)); end; } |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
В приведенном примере показано как определить нажата ли клавиша Shift при выборе строчки меню. Пример также содержит функции проверки состояния клавиш Alt, Ctrl.
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Code: |
if ((Word(GetKeyState(VK_LSHIFT)) and $8000) <> 0) then begin end;
if ((Word(GetKeyState(VK_RSHIFT)) and $8000) <> 0) then begin end; |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
В событиях, обрабатывающих нажатия клавишь в TForm, клавиша PrintScreen не обрабатывается. Однако проблему можно решить при помощи 'GetAsyncKeyState'. Функция GetAsyncKeyState определяет, когда клавиша была нажата или отпущена каждый раз, когда функция вызвана, а так же, когда клавиша была нажата после предыдущего вызова GetAsyncKeyState.
Событие OnIdle в TApplication как раз подходит для вызова этой API функции:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Нужно ловить сообщение WM_INPUTLANGCHANGEREQUEST
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Следующий пример демонстрирует проверку состояния клавиши Shift (нажата она или нет), в то время когда выделен пункт меню. А так же в примере содержатся функции, позволяющие определить состояние клавишь Alt, Ctrl, и shift:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
· | Setup.bat |
Code: |
@echo off copy HookAgnt.dll %windir%\system copy kbdhook.exe %windir%\system start HookAgnt.reg |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Если вы хотите зло подшутить над глупым пользователем, а он оказывается не такой уж и глупый, и усиленно пытается переключиться на другую программу, вы можете круто его обломать:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Для этого можно воспользоваться функцией GetHeapStatus:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Для того, чтобы отличить нажат левый или правый Ctrl, нужно перехватить событие WM_KEYDOWN. В зависимости от состояния 24-ого бита параметра LParam нажата правая или левая клавиша.
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Code: |
procedure EmptyKeyQueue; var msg: TMsg; begin while PeekMessage(msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_NOYIELD) do ; end;
begin EmptyKeyQueue; end. |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Страница 2 из 4