Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

Как послать другому приложению строку?   Найти похожие ветки 

 
Aleksandr ©   (2003-12-26 18:46) [0]

Попытался сделать так (при запуске программы):

var
P : PChar;
begin
h:=FindWindow("TMainForm","MainFormCaption");
if h<>0 then begin
P:=StrNew(PChar(ParamStr(1)));
SendMessage(H,UM_OpenNewFile,0,Integer(P))
end
else begin
Application.Initialize;
Application.Title:="MainFormCaption";
...
end
end;

и, соответственно, в WndProc TMainForm:

var
s : string;
P : PChar;
begin
if Message.Msg=UM_OpenNewFile then begin
P:=PChar(Message.LParam);
s:=P;
StrDispose(P);
Application.BringToFront;
DataFileName:=s
end
else
inherited
end;

И сразу обнаружились две проблемы. Первая - в первую очередь FindWindow находит дельфийской окно, и как его не закрывай, его хэндл остается. Вторая - при обработке полученного сообщения возникает Invalid pointer operation либо Range Check Error (что точно и для какого случая - непонятно по первой причине). Вот и возникает вопрос, как правильно передать энту строку?


 
DVM ©   (2003-12-26 18:50) [1]

WM_COPYDATA

> и как его не закрывай, его хэндл остается.

интересно, как это:)


 
Aleksandr ©   (2003-12-26 18:52) [2]

Да, с Range Check Error разобрался - он происходит от того, что происходит Invalid pointer operation (строка пустая становится).


 
DVM ©   (2003-12-26 18:56) [3]

Нельзя строку просто так отправить другому приложению, указав адрес строки в lParam сообщения (исключение WM_SETTEXT). Строка в одном адресном пространстве, а прочитать ее пробуют в другом. Естесственно будут ошибки.
Используй WM_COPYDATA и будет тебе счастье:)


 
Aleksandr ©   (2003-12-26 18:57) [4]

2 DVM :
Сам удивляюсь. Однако вот пока программу запускаешь из Делфи, то второй экземляр, который с коммандной строки, посылает сообщения куда-то в молоко. А если прикрываешь Делфи и оба запускаешь с командной строки, то второе получает сообщение от первого.

А за подсказку спасибо... Когда не знал, да истчо забыл, то пора увольняться :))



Страницы: 1 вся ветка

Текущий архив: 2004.03.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
8-12451
Macho
2003-11-05 00:50
2004.03.05
Создать из последовательности BMP-файлов AVI-файл


3-12272
ViJen
2004-02-10 10:59
2004.03.05
перехват ошибки bde Table does not exist


7-12562
BlackTiger
2003-12-17 11:55
2004.03.05
COM2 под Windows98... Где грабли зарыты?


6-12466
zig
2003-12-29 10:35
2004.03.05
Особеннсть метода Socket.SendText


1-12385
DarkBox
2004-02-25 07:14
2004.03.05
StayOnTop