кусок DLL хука клавиатуры. как ловить нажатие ctrl + c, ctrl + v?

Рейтинг: 1Ответов: 1Опубликовано: 17.04.2015

Здравствуйте! Как записать при нажатии вышеупомянутых сочетаний в строку CurStrW := 'ctrl +' + символ? Сейчас пишется просто "квадратик". {

MyHKL:=GetKeyboardLayout(GetWindowThreadProcessId(FocusWnd,nil));
ScanCode:=MapVirtualKeyEx(VirtualKey, 0, MyHKL);
GetKeyboardState(KS);
Count:=ToUnicodeEx(VirtualKey, ScanCode, @KS, @WBuff,   SizeOf(WBuff),0,MyHKL);
MyHKL:=0;

if (Count=1)and(Ord(WBuff[0])<>13)and(Ord(WBuff[0])<>8)
and(Ord(WBuff[0])<>27)
then CurStrW:=WBuff
else
begin
GetKeyNameTextW(KeyStroke, szKeyNameW, sizeof(szKeyNameW));
CurStrW:=szKeyNameW;
end;

if (IsShift<>IsCapsLock) then
CurStrW:=WideUpperCase(CurStrW);

l:=length(CurStrW);

if (l>1) then
begin
Insert('[', CurStrW, 1);
Insert(']', CurStrW, length(CurStrW)+1);
end;

}

Ответы

▲ 1

как ловить нажатие ctrl + c, ctrl + v?

Используйте GetKeyAsyncState на соответствующих кодах клавиш.

[17+67] - Ctrl+C
[17+86] - Ctrl+V

Как записать при нажатии вышеупомянутых сочетаний в строку CurStrW := 'ctrl +' + символ? Сейчас пишется просто "квадратик". {

Здесь можно брать диапазонами: 48-57 (0-9), 65-90 (A-Z), остальное выбирать своим select-ом. Таблица виртуальных клавиш.