Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Сообщения (Диалог между двумя приложениями).   Найти похожие ветки 

 
andrey__   (2004-07-07 14:01) [0]

Подскажите как послать из одного приложения сообщение для другого.


 
ssk ©   (2004-07-07 14:11) [1]

это нужно?


// передача строки другому приложению
function SendDataToApplication(SourceWindow, DestinationWindow: HWND; s: string): boolean;
type
 PCopyDataStruct = ^TCopyDataStruct;
 TCopyDataStruct = record
   dwData: LongInt;
   cbData: LongInt;
   lpData: Pointer;
 end;
type
 PRecToPass = ^TRecToPass;
 TRecToPass = packed record
   s : string[255];
   i : integer;
 end;
var
 h : THandle;
 cd : TCopyDataStruct;
 rec : TRecToPass;
begin
 h:=DestinationWindow;
 rec.s := s;
 rec.i := Length(rec.s);
 cd.dwData := Length(rec.s);
 cd.cbData := sizeof(rec);
 cd.lpData := @rec;
 Result:=False;
 if h <> 0 then
   begin
     SendMessage(h, WM_COPYDATA, SourceWindow, LongInt(@cd));
     Result:=True;
   end;


// обработка данных приложением-приемником

 {
 private
   procedure WMCopyData(var m : TMessage); message WM_COPYDATA;

 ...

 procedure TForm1.WMCopyData(var m : TMessage);
 type
   PCopyDataStruct = ^TCopyDataStruct;
   TCopyDataStruct = record
     dwData: LongInt;
     cbData: LongInt;
     lpData: Pointer;
   end;
 type
   PRecToPass = ^TRecToPass;
   TRecToPass = packed record
     s : string[255];
     i : integer;
   end;
 begin
   Memo1.Lines.Add("Sending Window Handle := " + IntToStr(m.WParam));
   Memo1.Lines.Add("Data Size := " + IntToStr(PCopyDataStruct(m.LParam)^.cbData));
   Memo1.Lines.Add("User Defined Data Param := " + IntToStr(PCopyDataStruct(m.LParam)^.dwData));
   Memo1.Lines.Add("TRecToPass.s := " + PRecToPass(PCopyDataStruct(m.LParam)^.lpData)^.s);
   Memo1.Lines.Add("TRecToPass.i := " + IntToStr(PRecToPass(PCopyDataStruct(m.LParam)^.lpData)^.i));
 end;
 }
end;


 
NAlexey ©   (2004-07-07 14:12) [2]

>ssk ©   (07.07.04 14:11) [1]
Можно и так, но возможны взаимные блокировки.


 
andrey__   (2004-07-07 14:49) [3]

>ssk ©   (07.07.04 14:11) [1]

Как мне узнать в посылающем сообщение приложении DestinationWindow (Окно Адресата) для
function SendDataToApplication(SourceWindow, DestinationWindow: HWND; s: string): boolean;


 
andrey__   (2004-07-07 16:05) [4]

Удалено модератором
Примечание: Создание пустых сообщений


 
ssk ©   (2004-07-07 16:43) [5]

FindWindow()


 
andrey__   (2004-07-07 17:16) [6]

Подскажи как посылать широковещательные сообщения (между приложениями).


 
ssk ©   (2004-07-07 17:25) [7]

>широковещательные сообщения

это как? честно говоря, первый раз о таких слышу.


 
andrey__   (2004-07-07 17:53) [8]

Что я не так делаю?
  h:= FindWindow(Pchar("Application"),Pchar("MainForm"));т.к. h выдаёт =0.

>это как? честно говоря, первый раз о таких слышу.

Вычитал в книге Delphi 5 "Руководство программиста" Ксавье Паченко и Стив Тейксейра т.1 (гл. 5 разд "обмен сообщ между приложениями") Если есть. Только там не описано как их делать.


 
Digitman ©   (2004-07-07 18:05) [9]


> Что я не так делаю?
>   h:= FindWindow(Pchar("Application"),Pchar("MainForm"));т.к.
> h выдаёт =0.


h:= FindWindow(Pchar("имя_класса_формы"),Pchar("подпись_формы"));


> там не описано как их делать


SendMessage(HWND_BROADCAST, ..);

а вообще говоря интерпроцессные коммуникации с пом. оконных сообщений между "своими" приложениями - плохое решение

на то существуют программные каналы и файлы отображенные в память



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1091276543
mikey
2004-07-31 16:22
2004.08.15
Добрый день. Есть список


3-1090000166
Yaral
2004-07-16 21:49
2004.08.15
События в FB1.5


3-1090315249
Kaginava
2004-07-20 13:20
2004.08.15
работа с MySQL


3-1090415150
AlexanderSK
2004-07-21 17:05
2004.08.15
Как правильнее использовать транзакции?


14-1091016756
Kreogen
2004-07-28 16:12
2004.08.15
Помогите с конфигурацией





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский