Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.034 c
14-1094737906
blackman
2004-09-09 17:51
2004.09.26
КАК ПОМОЧЬ


6-1090364380
MIGUR
2004-07-21 02:59
2004.09.26
ЧЕКЕР


1-1095106813
Garfunkel
2004-09-14 00:20
2004.09.26
Прикрипление файлов к программе


9-1085198433
lokid7
2004-05-22 08:00
2004.09.26
Книги по созданию игр в электронном виде


11-1080312842
Raki
2004-03-26 17:54
2004.09.26
MHMonthCalendar 0.3





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский