Добрый всем день,
Есть два моих приложения,
нужно от одного передать параметры другому,
задача осложняется тем, что сперва надо определить запущенно ли то приложение которому мы хотим передать параметры.
Собственно делал я это раньше просто запуская из одного приложения другое с параметрами, а у вызываемого приложения блокировал повторный запуск и посылал сообщение первому экзампляру - все работает.
Теперь нужно сделать так чтобы первое приложение передало параметры другому приложению (если оно уже запущенно) без повторного запуска "другова" приложения.
Определение что приложение запущенно работает а вот передача параметров нет.
Вот код первого приложения:
..........
if StrComp(buff,mainS)=0 then // Сравниваем с искомым заголовком
begin
SendMessage(Wnd,WM_SETFOCUS,Wnd,0);// Восстанавливаем найденный экземпляр
ShowWindow(Wnd,SW_SHOWNORMAL);
// шлем ему нужные парамметры
tr_param:='num_'+RxMemoryData1.fieldbyname('NOMZAYAV').asString;
AtomID:=GlobalAddAtom(PChar(tr_param));
SendMessage(Wnd,WM_SendNRParams,0,AtomID);
GlobalDeleteAtom(AtomID);
end;
..........
Вот ловушка во втором приложении:
procedure TForm1.WndProc;
var
Buf: array[Byte] of Char;
param:string;
begin //
if Message.Msg = WM_SendFromControl then
begin
GlobalGetAtomName(Message.LParam,Buf,255);
param:=buf;
if copy(param,1,3)='num' then
begin
param:=copy(param,5,15);
if Button5.Caption='Найти' then
Button5.Click else
begin
clearform;
end;
Edit1.Text:=param;
end;
end
else inherited WndProc(Message);
end;
Так вот в первом приложении атом создается,
а ловушка ни чего не получает!!!
Помогите, пожалуйста, или предложите другой способ.