Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Передача данных между копиями 
Author Message
Nik



PostPosted: Wed Mar 02, 2005 19:20    Post subject: Reply with quote

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-файл и отправляет второй копи уведомление, после чего вторая копия читает данные из файла.
View user's profile Send private message Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group