Доброе время суток всем!!!! Создал хук клавы....все работает, решил приспособить его в комбинации клавиш....вот проца обработки нажатия кнопки клавиатуры из DLL:
Код:
function KeyMsgProc(Code: integer; wParam: word;
lParam: LongInt): LongInt; stdcall;
var kn: array[0..50] of Char;
begin
GetKeyNameText(lParam, kn, SizeOf(kn));
CurrKey:= StrPas(kn);
if (Code = HC_ACTION) and (((lParam shr 16) and KF_UP) = 0) and
(Pos(CurrKey, ShortC) = 0) then
begin
ShortC:= ShortC + CurrKey + '+';
KeyUpped:= false;
// MessageBox(0, PChar('---' + ShortC + '---'), PChar(''), MB_OK);
end
else
if (Code = HC_ACTION) and (((lParam shr 16) and KF_UP) = KF_UP) and
not KeyUpped then
begin
if ShortC[Length(ShortC)] = '+' then Delete(ShortC, Length(ShortC), 1);
MessageBox(0, PChar('---' + ShortC + '---'), PChar(''), MB_OK);
KeyUpped:= true;
CurrKey:= '';
ShortC:= '';
end;
Result:= CallNextHookEx(KHook, Code, wParam, lParam);
end;
Так вот проблема в том что при нажатии, к примеру, "Alt + 0" он почему-то 2 раза выводит сообщение "---Alt + 0---", хотя по идее должна 1 раз выводить........почему тада 2 раза?