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

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

Обмен между приложениями. [D7, Win2k]


Lera ©   (2004-10-05 11:25:00) 

Уважаемые профи, такая проблема - запущено приложение созданное
в Delphi, например Application.exe. Из него вызывается другое,
например Application2.exe. Необходимо передать несколько
символьных параметров из Application.exe в Application2.exe.
Подскажите как это сделать.


Prov   (2004-10-10 08:03:00) [1]

Не можно, а только так и нужно.. Самый надежный вариант


CDF   (2004-10-10 00:03:00) [2]

Для разделения памяти можно попробовать использовать отображаемые файлы (функция CreateFileMapping). А для уведомления изменили/записали использовать сообщения...


Classic   (2004-10-09 23:45:00) [3]

А если создать в памяти некую область данных, затем изменяя в ней какие-то данные одной программой, информировать другую об этои изменении - мол, я там что-то изменила (записала), читай сама и усваивай :)
Как реализовать не знаю, но мастеров много, может подскажут...


GanibalLector   (2004-10-05 23:59:00) [4]

2 Pashko  
Хорошо, а как правильно организовать обмен строками между двумя уже работающими приложениями?

procedure ReceiveMessage (var Msg: TMessage);
message WM_COPYDATA;
...
procedure TFormReceive.ReceiveMessage;
var
pcd: PCopyDataStruct;
begin
pcd := PCopyDataStruct(Msg.LParam);
Caption := PChar(pcd.lpData);
end;

отправитель:

procedure TFormXXX.Button1Click(Sender: TObject);
var
cd: TCopyDataStruct;
begin
cd.cbData := Length(Edit1.Text) + 1;
cd.lpData := PChar(Edit1.Text);
SendMessage(FindWindow('TFormReceive', nil), WM_COPYDATA, 0, LParam(@cd));
end;


Pashko   (2004-10-05 23:55:00) [5]

Хорошо, а как правильно организовать обмен строками между двумя уже работающими приложениями?
В документации нашёл сообщение WM_COPYDATA, если оно подходит, то как с его помощью правильноотправить напр. строку?


Ihor Osov'yak   (2004-10-05 23:32:00) [6]

2 [3] XProger ©   (05.10.04 22:45)

> Причём в ParamStr(1) будет храниться полный путь к исполняемому файлу...

в ParamStr( 0), однако..

и  

for i := 1 to ParamCount do
if ParamStr( pred(i)) = 'что-то там' then
сделать то-то;


XProger   (2004-10-05 22:45:00) [7]

А потом читай в Application2.exe:

for i := 1 to ParamCount do
if ParamStr(i) = 'что-то там' then
 сделать то-то;

Причём в ParamStr(1) будет храниться полный путь к исполняемому файлу...


Плохиш   (2004-10-05 11:30:00) [8]

Application2.exe param1 param2 param3 ...


xShadow   (2004-10-05 11:27:00) [9]

SendMessage - чем тебе не подходит?


Наверх

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