Подскажите как отловить и обработать сообщения Windows внутри консольного приложения? Пример есть один, но в нем не все понятно:
Код | program Project1; {$APPTYPE CONSOLE}
uses Windows, Messages;
var ID, ThrHandle, InpHandle, ScrHandle: Cardinal; IR: INPUT_RECORD; Msg: TMsg;
procedure Execute; // цикл обработки сообщений begin repeat GetMessage(Msg,0,0,0); // берем сообщение в переменную Msg case Msg.message of // анализируем тип сообщения ... end; until False; end;
begin InpHandle:=GetStdHandle(STD_INPUT_HANDLE); ScrHandle:=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTitle('Super Program'); ThrHandle:=CreateThread(nil,0,@Execute,nil,0,ID); // создаем новый поток { цикл обработки ввода: } repeat WaitForSingleObjectEx(InpHandle,INFINITE,false); // ждем события ввода ReadConsoleInput(InpHandle,IR,1,Wr); // берем запись в переменную IR case IR.EventType of // анализируем тип события ввода ... end; until False; end.
|
|