![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обмен между приложениями. [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 - чем тебе не подходит?