Вниз
Скачать: CL | DM;

Обмен между приложениями.   Найти похожие ветки 

← →
Lera   (2004-10-05 11:25) [0]

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


← →
xShadow ©   (2004-10-05 11:27) [1]

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


← →
Плохиш ©   (2004-10-05 11:30) [2]

Application2.exe param1 param2 param3 ...


← →
XProger ©   (2004-10-05 22:45) [3]

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

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

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


← →
Ihor Osov'yak ©   (2004-10-05 23:32) [4]

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

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

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

и  

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


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

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


← →
GanibalLector ©   (2004-10-05 23:59) [6]

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;


← →
Classic   (2004-10-09 23:45) [7]

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


← →
CDF   (2004-10-10 00:03) [8]

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


← →
Prov   (2004-10-10 08:03) [9]

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



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.038 c
1-1099827900
race1
2004-11-07 14:45
2004.11.21
перемешивание стека


3-1098863725
Alena
2004-10-27 11:55
2004.11.21
DBEdit не post-иться поле


3-1098801119
nd
2004-10-26 18:31
2004.11.21
О Транзакциях и Кэшированных изменениях


14-1099520828
Mirror
2004-11-04 01:27
2004.11.21
Куда можно спрятать дату активации проги?


1-1099682272
Kolan
2004-11-05 22:17
2004.11.21
Работа с RichEdit




   Наверх