Nik

|
Posted: Wed Mar 02, 2005 19:20 Post subject: |
|
|
2SCHMaster
В новых версиях я уже не использую FileMap - теперь нормально работает Mutex (для блокировки запуска копий).
А вот WM_COPYDATA я пробовал: между окнами одной программы все работает отлично, а при передачи от одной копии к другой вместо строки приходят кракозябры (видимо адрес неверно передается?)...
Алгоритм применял такой:
Code: |
// Для отправки:
procedure TAmpViewMainForm.Button1Click(Sender: TObject);
var
cd: TCopyDataStruct;
begin
cd.cbData := Length(Edit1.Text) + 1;
cd.lpData := PChar(Edit1.Text);
SendMessage(FindWindow('TAmpViewMainForm', nil), WM_COPYDATA, 0, LParam(@cd));
end;
// Для получения
private
procedure ReceiveMessage (var Msg: TMessage); message WM_COPYDATA;
//
procedure ReceiveMessage;
var
pcd: PCopyDataStruct;
begin
pcd := PCopyDataStruct(Msg.LParam);
Caption := PChar(pcd.lpData);
end;
|
В итоге пришлось применить несколько извращенский способ: первая копия пишет нужные данные в ini-файл и отправляет второй копи уведомление, после чего вторая копия читает данные из файла. |
|