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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.926 c
4-1097089653
maxz
2004-10-06 23:07
2004.11.21
неубиваемый процесс


14-1099563938
k@rt_
2004-11-04 13:25
2004.11.21
Отказано в доступе.


3-1098809624
Andriy Tysh
2004-10-26 20:53
2004.11.21
EDatabaseError Unable to find record. No key specified


3-1098305227
Maxim_____
2004-10-21 00:47
2004.11.21
простой вопрос по выборке из ib баз


1-1099755398
RSFD
2004-11-06 18:36
2004.11.21
нумерация строк





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский