Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.05.07 12:23 
Hi, ich schicke per
ausblenden Delphi-Quelltext
1:
SendMessage(H,WM_USER+3,Integer(Txt),0);					

einen String an ein andres Programm...wenn ich es in meinem andren programm aber dann mit
ausblenden Delphi-Quelltext
1:
String(msg.wParam)					

wieder auslesen will kommt nur buchstabensalat raus...wo is mein fehler?

Thx im vorraus

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Do 17.05.2007 um 14:30

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Do 17.05.07 12:41 
Das geht so nicht: Denn das andere Programm hat ja gar keinen Zugriff auf den Adressraum des Senders.

VErwende die Message WM_COPYDATA. Damit geht das. Du musst dann noch so ein CopyDataStruct (oder wie das heißt) befüllen. Ist aber sehr einfach.

_________________
Na denn, dann. Bis dann, denn.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.05.07 13:20 
ok, thx :)
hab nur das problem, dass WM_COPYDATA nicht ankommt...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
cds.dwData:=0;
cds.cbData:=sizeof(Txt);
cds.lpData:=@Txt;
SendMessage(H,WM_COPYDATA,Integer(@cds),0);


Empfänger
ausblenden Delphi-Quelltext
1:
procedure WriteProtokoll(var msg: TMessage); message WM_COPYDATA;					

=>keine reaktion

mit WM_USER+4 gehts...

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.05.07 13:23 
aah, so empfängt er was:

SendMessage(H,WM_COPYDATA,HInstance,Integer(@cds));

kann mir jemand erklären warum? würds gerne verstehen und nicht nur abschreiben...

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.05.07 13:29 
und wie genau funktioniert das auslesen dann?
ausblenden Delphi-Quelltext
1:
String(msg.CopyDataStruct.lpData)					

geht nicht (Buchstabensalat)

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 18.05.07 12:56 
habs jetzt so (kommt nur mist an)

ausblenden Sender
1:
2:
3:
4:
5:
6:
7:
8:
var h: THandle; cds: TCopyDataStruct;
begin
 cds.dwData:=0;
 cds.cbData:=sizeof(Txt);
 cds.lpData:=@Txt;
 h:=FindWindow('TNynx2Form'nil);
 SendMessage(H,WM_COPYDATA,Longint(Application.Handle),Integer(@cds));
end;


ausblenden Empfänger
1:
2:
3:
4:
5:
var sText: array[0..256of Char;
begin
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
  Memo.Lines.Add(sText);
end;

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 18.05.07 13:24 
aah, jetzt gehts...jetzt ist mir auch klar, wies funktioniert ;)

ausblenden Empfänger
1:
2:
3:
4:
5:
6:
7:
8:
var h: THandle; cds: TCopyDataStruct;
begin
  cds.dwData:=0;
  cds.cbData:=StrLen(PChar(Txt)) + 1;;
  cds.lpData:=PChar(Txt);
  h:=FindWindow('TNynx2Form'nil);
  SendMessage(H,WM_COPYDATA,Longint(Application.Handle),Integer(@cds));
end;

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 18.05.07 13:28 
Vielleicht liegt es daran, das Du die Adresse eines Strings übergibts. MyString ist ein Pointer und @MyString die Adresse diese Zeigers. @MyString[1] ist dagegen die Adresse des ersten Zeichens im String...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedure SendStringToWindow (aMessage : String; hClient : Integer);
Var
  c: TCopyDataStruct;

Begin
  c.dwData := 0;
  c.cbData := Length(aMessage);
  c.lpData := @aMessage[1];
  SendMessage(hClient, WM_COPYDATA, 0, Integer(@c));
End;

Und so empfange ich das:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedure TDispatcherWindow.CMCopyData(Var M: TMessage);
Var
  P: PCopyDataStruct;
  sMessage : String;
Begin
  p := PCopyDataStruct(M.LParam);       
  SetLength(sMessage , p^.cbData);
  Move(PChar(p^.lpData)^, sMessage [1], p^.cbData);
  PendingJobs.AddJob(s);
End;

_________________
Na denn, dann. Bis dann, denn.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 18.05.07 13:33 
thx :D , habs ja eben grad gefunden, den fehler. Funtkioniert einwandfrei :)

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)