Вниз
Скачать: 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.035 c
4-1092660212
Manfred
2004-08-16 16:43
2004.09.26
Какое сообщение генерится при нажатии CTRL+ALT+DEL?


3-1093518855
Marat
2004-08-26 15:14
2004.09.26
Максимальное количество столбцов


1-1094940593
denis_v_ne
2004-09-12 02:09
2004.09.26
Как написать в Delphi сложные математические выражения?


14-1094361325
Думкин
2004-09-05 09:15
2004.09.26
С днем рождения! 5 сентября


14-1094401976
Stany
2004-09-05 20:32
2004.09.26
исходник для подсчета интернет траффика




   Наверх