Помогите разобраться с перехватом нажатия сочетания клавишь Alt+X в консольном приложении.
Суть приложения такова — отслеживается наличие файлов в определенном каталоге и если они там появляются, то с ними выполняются определенные действия.
Приложение весит постоянно и вот для того чтобы из него выйти в любой момент времени я пытаюсь ввести перехват нажатия Alt+X — то бишь ВЫХОД из приложения.
Попробывал написать следующую процедуру или функцию (это не принципиально):
Check_Key:=False;
If (((Byte(GetKeyState(VK_LMENU)) shr 7) = 1) Or ((Byte(GetKeyState(Ord('X'))) shr 7) = 1)) Then
begin
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), IBuff, 1, IEvent);
IF ((IBuff.Event.KeyEvent.bKeyDown = True) and (IBuff.Event.KeyEvent.wVirtualKeyCode = VK_MENU)) then
begin
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), IBuff, 1, IEvent);
IF ((IBuff.Event.KeyEvent.bKeyDown = True) and (IBuff.Event.KeyEvent.wVirtualKeyCode = Ord('X'))) then
begin
Check_Key:=True;
exit;
end;
end;
end;
Но возникла проблема это срабатывает только в момент простоя приложения, а если в момент обработки файлов нажато то естественно нажатие не запомнилось.
Предложения переписать приложение в VCL не принимаются.