Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Delphi, API, Message


Автор: Bog d`An 7.4.2005, 19:26
зы: Как заставить приложение Delphi отвечать на сообщения Windows?

Используем WM_WININICHANGED в качестве примера :

Объявление метода в TForm позволит вам обрабатывать сообщение WM_WININICHANGED:


procedure WMWinIniChange(var Message: TMessage); message WM_WININICHANGE;


Код в implementation может выглядеть так:


procedure TForm1.WMWinIniChange(var Message: TMessage);
begin
inherited;
{ ... ваша реакция на событие ... }
end;

Итак, внимание вопрос:
Где найти все соответствующие константы (WM_WININICHANGE)?????

Автор: Girder 7.4.2005, 19:55
Начни с Messages.pas smile

Автор: a.S.d 9.4.2005, 16:48
Чтоб заставить приложение отвечать на сообщения, нужно сделать обработчик сообщений
GetMessage();
TranslateMessage():
Или поставить хук, а его функция буде проверять, какое сообщение и что с ним делать.

Автор: Bog d`An 12.4.2005, 01:36
Ага, понятно, спасибо... А так чтобы с описаниями и на русском? smile
Справочник какой, что-ли...

Конкретней: сообщение о перетаскивании файлов в приложение выглядит приблизительно так
Код


...
type
  TMainForm = class(TForm)
...
  private
    { Private declarations }
    procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; 
...
implementation
...
Procedure TMainForm.WMDropFiles(var Msg: TWMDropFiles);
var
  CFileName: array[0..MAX_PATH] of Char; 
  NumberFiles, counter: Cardinal;
  CurList:TStringList;
begin
  CurList:=TStringList.Create;
  try
    NumberFiles:=DragQueryFile(Msg.Drop, $FFFFFFFF, CFileName, MAX_PATH); 
    for counter:=0 to Numberfiles-1 do
    Begin
      DragQueryFile(Msg.Drop, counter, CFileName, MAX_PATH);
      CurList.Add(CFileName); 
    End;
    Msg.Result := 0;
  finally
    DragFinish(Msg.Drop); 
  end;
  AddAll(CurList);
  CurList.Free;
  CurList:=nil;
end;
...


а как получать аналогичный результат с именами компьютеров рабочей группы - они ведь тоже перетаскиваются? smile

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