Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.043 c
11-1080626196
Новичёк
2004-03-30 09:56
2004.09.26
Написание сервиса NT с помощью KOL.


14-1094716082
by
2004-09-09 11:48
2004.09.26
Пример модели предметной области для проектирования


14-1094297684
qwerty1000
2004-09-04 15:34
2004.09.26
delphi и hyper-threading


14-1094146547
DeadMeat
2004-09-02 21:35
2004.09.26
Чего взять?...


1-1093969695
Synochka
2004-08-31 20:28
2004.09.26
ListBox, CheckListBox и Windows XP