![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
keydown [D6, WinXP]
kex86 © (2002-12-02 14:14:00)Расскажите, пжлста, научно-популярно, как отлавливить все нажатия клавиш в системе консольной программой.
asmith (2002-12-02 15:47:00) [1]Использовать функции консольного ввода-вывода такие, как ReadConsoleInput. Вот небольшой пример:
{$APPTYPE CONSOLE}
program ConsoleInput;
uses
Windows;
var
hInput: THandle;
arrInputRecs: array[0..9] of TInputRecord;
dwCur, dwCount: DWORD;
cCur: Char;
coorCur: TCoord;
begin
hInput := GetStdHandle(STD_INPUT_HANDLE);
while True do
begin
ReadConsoleInput(hInput, arrInputRecs[0], 10, dwCount);
for dwCur := 0 to dwCount - 1 do
case arrInputRecs[dwCur].EventType of
KEY_EVENT: with arrInputRecs[dwCur].Event.KeyEvent do
begin
cCur := AsciiChar;
if cCur = "" then
if bKeyDown then
WriteLn("Unprintable key pressed.")
else
Writeln("Unprintable key released.")
else
if bKeyDown then
WriteLn("Pressed ",cCur," ",wRepeatCount," times.")
else
WriteLn("Released ", cCur, " key.");
end;
{*** Delphi has renamed MOUSE_EVENT to avoid a conflict ***}
{*** with a windows function mouse_event() ***}
_MOUSE_EVENT: with arrInputRecs[dwCur].Event.MouseEvent do
begin
coorCur := dwMousePosition;
if dwEventFlags = 0 then
WriteLn("Button Pressed at ",coorCur.X,",",coorCur.Y);
end;
end;
end;
end.
kex86 (2002-12-02 14:35:00) [2]Дык я и есть деть
Song (2002-12-02 14:33:00) [3]Вверху ссылочка "Поиск". Набираешь "хук", выбираешь поиск в статьях и ищешь. Ну что всем как детям всё объяснять надо??
kex86 (2002-12-02 14:30:00) [4]Это где? адрес дайте, а то там много статей
Song (2002-12-02 14:20:00) [5]Статью "Хуки. Аспекты реализации" смотри.
kex86 (2002-12-02 14:19:00) [6]А еще более научно-популярно?
Какие параметры и что возвращает?
Song (2002-12-02 14:16:00) [7]SetWindowsHookEx()