Форум: "KOL";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
ВнизKOL+VCL Найти похожие ветки
← →
Bartov (2003-04-03 01:53) [0]У нас есть VCL форма (отделное приложение) на ней есть Edit.
На KOL форме(уже другое приложение) EditBox + Button.
Как сделать, чтоб при нажатии на Button передалось значение иp EditBox"а(KOL-приложение) в Edit(VCL-приложение).
← →
SPeller (2003-04-03 02:54) [1]Так же как и всегда. Я так понял, вам нужно передать что-то из одного приложения в другое?
← →
Bartov (2003-04-03 03:02) [2]> Так же как и всегда.
А как?...
> Я так понял, вам нужно передать что-то из одного приложения в другое?
Да, да!!!
Очень срочно надо!!!
← →
mdw (2003-04-03 11:00) [3]Одно приложение(KOL) посылает собщение (SendMessage), второе(VCL) - получает. В lParam, например, передавай указатель на буфер данных или сами данные, если <= 4 байт.
← →
SPeller (2003-04-03 11:11) [4]2 Bartov
Я к тому, что KOL здесь ни при чём. Ты бы лучше спросил это в форуме по WinAPI, там тебе срезу же ответили бы. А если по теме, то в том случае, если твои данные <= 4 байт, то посылай любое сообщение, главное чтобы другая программа отфильтровала его от остальных. В противном же случае, если твои данные больше 4-х байт, то используй WM_COPYDATA.
← →
GandalfTheWhite (2003-04-03 11:23) [5]Можно создать файл проецириемый в память, можно через сообщения (можно послать указатель на данные любого размера)...
← →
SPeller (2003-04-03 16:58) [6]
> GandalfTheWhite (03.04.03 11:23)
> Можно создать файл проецириемый в память, можно через сообщения
> (можно послать указатель на данные любого размера)...
WM_COPYDATA работает как раз через file mapping. А для передачи адреса.. ну так в этом сообщении и шлите указатель вместе с размером, потому что любое другое сообщение указатель-то передаст, но вот данные нет.
← →
Bartov (2003-04-03 19:57) [7]Всем спасибо за ответы.
Но лучше напишите код, хотябы пару сторк. Мне нужно string передавать.
Пипл, ну очень надо!!!
← →
mdw (2003-04-03 21:41) [8]Примено вот так. Кромсал работающий кусок, может где и переборщил. Но принцип должен быть понятен.
В VCL
TFormX = class(TForm)
...
private
procedure WMCOPYDATA(var M: TMessage); message WM_COPYDATA;
...
end;
procedure TFormX.WM_COPYDATA(var M: TMessage);
var S: String;
begin
SetLength(S, PCopyDataStruct(M.LPARAM)^.cbData);
S:= PChar(PCopyDataStruct(M.LPARAM)^.lpData);
Edit.Text:= S;
M.Result:= 1;
end;
В KOL
...
var CopyDataStruct: TCopyDataStruct;
PCh: PChar;
...
PCh:= StrNew(PChar( Text));
with CopyDataStruct do begin
dwData:= 0;
lpData:= PCh;
cbData:= Length(S)+1;
end;
SendMessage(FindFindow("TFormX", "FormX"), WM_COPYDATA, Form.Handle, LPARAM(@CopyDataStruct));
StrDispose(PCh);
← →
Bartov (2003-04-04 10:47) [9]Спасибо, делаем...
← →
BaRToV (2003-04-14 17:45) [10]А вот если client KOL-приложение, то вылетает ошибка и приложение закрывается.
function TForm1.KOLForm1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var
st: string;
begin
Result := FALSE;
if Msg.message = WM_COPYDATA then
begin
SetLength(st, PCopyDataStruct(Msg.lParam)^.cbData);
st := PChar(PCopyDataStruct(Msg.wParam)^.lpData);
( PCopyDataStruct(Msg.wParam) [10]А вот если client KOL-приложение, то вылетает ошибка и приложение закрывается.
function TForm1.KOLForm1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var
st: string;
begin
Result := FALSE;
if Msg.message = WM_COPYDATA then
begin
SetLength(st, PCopyDataStruct(Msg.lParam)^.cbData);
st := PChar(PCopyDataStruct(Msg.wParam)^.lpData);
EditBox1.Text := st;
end;
end;
Ошибка возникает в st := PChar(PCopyDataStruct(Msg.wParam)^.lpData);
Как быть?!...
← →
mdw (2003-04-15 13:01) [11]Она возникает, по моему при освобожнении памяти. Короче лови на мыло пример. Вроде работает.
← →
Кладов (2003-04-15 15:27) [12]А setlength нужен ли? Если все равно присваивается PChar строке, то и память должна выделяться сама, а строка обрезаться до ближайшего #0. Если в строке есть #0, то вместо st := должно бы быть Move( PCopyDataStruct( Msg.wParam )^.lpData^, st[ 1 ],
PCopyDataStruct( Msg.lParam )^.cbData );
Что если написать Result := TRUE; Вылетает?
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c