Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Причтите PLZ! [D5, Win95/98, WinME, WinXP]


MystiX ©   (2002-06-06 12:02:00) 

Уважаемые мастера, прошу вас помоч!
У меня такая ситуация: есть dll в памяти и программа с невидимой формой,
мне надо из dll послать сообщение программе, а программа должна его обработать и
показать форму с popup menu или скрыть её если она была показана.
Вопрос: Как мне послать сообщение и принять его?
---------------------------------
Заранее спасибо!!!


ghost_by   (2002-06-07 03:41:00) [1]

FindWindow
Полезно также будет почитать http://delphi.mastak.ru/articles/winapi/index.html


MystiX   (2002-06-06 19:34:00) [2]

А как узнать handle моей прогрммы?


Игорь Шевченко   (2002-06-06 12:11:00) [3]

const WM_MYMESSAGE = WM_USER + 666;

Послать: SendMessage (..., WM_MYMESSAGE, ....)

Принять: написать обработчик сообщения


type
TMyForm = class(TForm)
private
procedure WMMyMessage (var Message : TMessage); message WM_MYMESSAGE;

.....
end;

procedure TMyForm.WMMyMessage (var Message : TMessage);
begin
MyPopupMenu.Popup (...)
end;


Виктор Щербаков   (2002-06-06 12:10:00) [4]

Послать сообщение можно вызовом SendMessage или PostMessage.
Для того, чтобы его принять, нужно написать обработчик сообщения для формы например:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

const
WM_NEWMESSAGE = WM_USER + 400;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure MyMessageHandler(var Message: TMessage); message WM_NEWMESSAGE;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.MyMessageHandler(var Message: TMessage);
begin
Visible := not Visible; // обрабатываем
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(Handle, WM_NEWMESSAGE, 0, 0); // шлем сообщение
// тебе нужно будет поставить этот вызов
// в dll
end;

end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо