Вниз
Скачать: CL | DM;

Межпрограммный интерфейс   Найти похожие ветки 

← →
bit ©   (2004-08-14 22:00) [0]

Мне нужно переслать строку из одного приложения в другое, для этого я использовал следующий код:

type
PKeyData=^TKey;
tkey=string[16];
var
msg_sendkey:integer;
key:tkey;

procedure TForm1.FormCreate(Sender: TObject);
begin
msg_sendkey:=registerwindowmessage("sendkey");
end;

procedure TForm1.Button1Click(Sender: TObject);

var
h:hdc;
begin
key:="0100000000000100";
h:=findwindow(nil,"project1");
if h=0 then exit;
postmessage(h,msg_sendkey,integer(self.Handle),cardinal(@key));
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
var
key:tkey;
begin
if msg.message=msg_sendkey then
 begin
  handled:=true;
  if pkeydata(msg.lParam)<>nil then
   key:=pkeydata(msg.lParam)^;
  caption:=key;
 end;
end;

Если прием и передача осуществляется в одном приложении, все работает нормально. Если в разных - вместо нужной строки принимается "ЙА".

Что я делаю неправильно?


← →
Мастер ©   (2004-08-15 00:58) [1]

http://delphimaster.net/view/4-1089261647/
Прочитай всю ветку и
см. последний постинг от Тимохова. п.3

Используй WM_COPYDATA.


← →
TUser ©   (2004-08-15 11:14) [2]

Принимать так
procedure TScanerWindow.WMCOPYDATA(var Msg:TMessage);
var p:PCopyDataStruct;
begin
  p:=PCopyDataStruct(Msg.lParam);
  copy(PChar(p^.lpData),1,p^.cbData) - это переданная строка
end;

А передавать так
procedure NewEvent(S:string);
var h:hWND;
   ac:PAnsiChar;
   cd:TCopyDataStruct;
begin
  h:=FindWindow("TScanerWindow","PDB Scaner ["+InCaption+"]");
  if h <> 0 then begin
     ac:=PAnsiChar(S);
     cd.cbData:=length(S);
     cd.lpData:=ac;
     SendMessage(h,WM_COPYDATA,Application.MainForm.Handle,integer(@cd))
     end;
end;



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.022 c
4-1092376525
kirasuki
2004-08-13 09:55
2004.09.26
System menu


3-1093865375
Koala
2004-08-30 15:29
2004.09.26
Поиск в представлении


6-1090150783
banderas
2004-07-18 15:39
2004.09.26
Список всех подключившихся к серваку idTCPServer


3-1094021617
NewDelpher
2004-09-01 10:53
2004.09.26
Используемые объекты


6-1090301549
Eagle
2004-07-20 09:32
2004.09.26
Socket PORT




   Наверх