Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Отлов сообщений Windows в консоли


Автор: Mixasik 6.6.2009, 21:48
Подскажите как отловить и обработать сообщения 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.

Автор: Cheloveck 7.6.2009, 18:51
А что не понятно-то? Получил сообщение, проверил какому окну, проверил что за сообщение, если нужно такое - вызвал функцию. Просто TranslateMessage не используешь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)