Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Связь между приложениями

Delphi , Программа и Интерфейс , Приложения чужие

Связь между приложениями

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
You can perform communication between your application using Windows messages 
exchange mechanism. We can use HWND_BROADCAST value for first parameter for 
SendMessage function for suppressing finding of forms' in other applications HANDLE. 
For using HWND_BROADCAST we should register our messages in Windows. 
In example below we will inform about our form's top position) 

Das Beispiel zeigt, wie zwischen zwei Applikationen eine Meldung (Message) 
verschickt werden kann. Die Meldung mit wird mit SendMessage verschickt. 
Der erst Parameter ist HWND_BROADCAST, beim zweite ist unsere Message. 
Das untenstehende Beispiel informiert z.B uber die Top-Position unserer Form}


 // 1. Define type of your message structure, it could be something like this: 
// 1. Definiere eine eigene Message Struktur: 


type
   TWMMYMessage = record
     Msg: Cardinal;   // ( first is the message ID ) 
    Handle: HWND;    // ( this is the wParam, Handle of sender) 
    Info: Longint;   // ( this is lParam, pointer to our data) 
    Result: Longint;
   end;

   // 2. Override your form''s DefaultHandler method and add 
  //    method for handling your message, like this 
  // 2. Die DefaultHandler Methode zu uberschreiben 

  TForm1 = class(TForm)
     ...public
     { Public declarations }
     ...procedure DefaultHandler(var Message); override;
     procedure WMMYMessage(var Msg: TWMMYMessage);
     ...end;


   // 3. Declare message variable: 
  // 3. Die Message-Variablen deklarieren: 

var
   WM_OURMESSAGE: DWORD;

   // 4. Insert realisation of DefaultHandler and our message handler methods: 
  // 4. DefaultHandler Implementation: 

procedure TForm1.DefaultHandler(var Message);
 var
   ee: TWMMYMessage;
 begin
   with TMessage(Message) do
   begin
     if (Msg = WM_OURMESSAGE) then
      begin
       ee.Msg    := Msg;
       ee.Handle := wParam;
       ee.Info   := lParam;
       // Checking if this message is not from us 
      if ee.Handle <> Handle then
         WMMYMessage(ee);
     end
     else
       inherited DefaultHandler(Message);
   end;
 end;

 procedure TForm1.WMMYMessage(var Msg: TWMMYMessage);
 begin
   label1.Caption := Format('Our another form handle :%d', [Msg.Handle]);
   Label2.Caption := Format('Our another form top :%d', [Msg.Info]);
 end;

 // 5. Add registration of your message that you could 
//    handle the HWND_BROADCAST messages: 
// 5. Die Message registrieren. 

initialization
   WM_OURMESSAGE := RegisterWindowMessage('Our broadcast message');

   // 6. Add the message sending somewhere: 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   SendMessage(HWND_BROADCAST, WM_OURMESSAGE, Handle, Top);
 end;

Статья демонстрирует, как выполнять обмен сообщениями между двумя приложениями с помощью механизма обмена сообщениями Windows в Delphi.

Вот разбивка кода:

Шаг 1: Определение структуры сообщения Тип TWMMYMessage определяется как запись с четырьмя полями: - Msg: ID сообщения - Handle: Обратный указатель на отправителя (wParam) - Info: Указатель на наше данные (lParam) - Result: Дополнительное 32-битное целое значение

Шаг 2: Переопределение метода DefaultHandler и добавление обработчика сообщения Форма TForm1 определяется с публичным процедурой DefaultHandler, которая переопределяет стандартную реализацию. Это позволяет поймать и обработать наши пользовательские сообщения. Кроме того, мы определяем приватную процедуру WMMYMessage, которая обрабатывает наше пользовательское сообщение. В этой процедуре мы извлекаем информацию из сообщения (обратный указатель отправителя и верхняя позиция) и обновляем два лейбла на форме (Label1 и Label2) с этой информацией.

Шаг 3: Определение переменной сообщения Переменная WM_OURMESSAGE определяется как DWORD, которая будет хранить ID нашего пользовательского сообщения.

Шаг 4: Реализация методов DefaultHandler и WMMYMessage В методе DefaultHandler мы проверяем, является ли полученное сообщение наше пользовательским сообщением (WM_OURMESSAGE). Если это так, мы извлекаем информацию из сообщения и вызываем нашу приватную процедуру WMMYMessage, чтобы обработать его. В противном случае мы передаем сообщение в стандартный обработчик.

Шаг 5: Регистрация нашего сообщения В разделе инициализации мы регистрируем наше пользовательское сообщение с помощью RegisterWindowMessage. Это позволяет отправлять сообщения с HWND_BROADCAST как параметром первого типа.

Шаг 6: Отправка сообщения Наконец, в процедуре Button1Click мы отправляем наше пользовательское сообщение с помощью SendMessage с параметрами HWND_BROADCAST и WM_OURMESSAGE. Второй параметр - наш формат, а третий параметр - верхняя позиция нашего формата. Код демонстрирует, как отправлять сообщения между двумя приложениями (или несколькими формами в одном приложении) с помощью механизма обмена сообщениями Windows в Delphi.

Связь между приложениями может быть реализована с помощью механизма обмена сообщениями Windows, позволяющего отправлять и получать сообщения между формами различных приложений.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложения чужие ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:03:51/0.01341700553894/1