Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Daten zwischen 2 Prozessen austauschen?? Wie? (https://www.delphipraxis.net/788-daten-zwischen-2-prozessen-austauschen-wie.html)

thomasdrewermann 6. Sep 2002 17:22


Daten zwischen 2 Prozessen austauschen?? Wie?
 
Hi,
ich möchte zwei programme programmieren, die untereinander daten austausen können, wenn beide laufen. (NICHT ÜBERS NETZWERK!!!!)

MFG
Thomas

d3g 6. Sep 2002 18:37

Hi thomas,

schau mal im PSDK/MSDN unter dem Stichwort WM_COPYDATA, das sollte das richtige für dich sein.

MfG,
d3g

Daniel 6. Sep 2002 18:38

Alternativ schau' im PSDK nach den Stichworten "Shared Memory" oder "Pipe".


Grüße,
Daniel

Christian Seehase 6. Sep 2002 18:39

Moin Thomas,

welches Volumen können die Daten denn haben, und von welchem Typ sind diese?

So auf Anhieb fallen mir vier Möglichkeiten ein:
  1. Verwendung von WM_COPYDATA
  2. Registieren einer eigenen Message via RegisterWindowMessage
  3. Nutzung der Atom Table
  4. DDE (auch wenn ich keine Ahnung von der Umsetzung habe ;-)


EDIT: 19:37, 19:38, 19:39 :mrgreen: /EDIT

thomasdrewermann 6. Sep 2002 20:08

Das mit der Window-Message hört sich gut an auch für Strings???
Kann mir jemand n Code-Schnipsel posten?

d3g 6. Sep 2002 20:55

Hi Thomas,

Sender:

Code:
procedure TForm1.FormCreate(Sender: TObject);
var
  aCopyData: TCopyDataStruct;
  p: PChar;
begin
  p := 'Hallo!';

  with aCopyData do begin
    dwData := 0;
    cbData := StrLen(p) + 1;
    lpData := p;
  end;

  SendMessage(FindWindow('TFormRecv', nil), WM_COPYDATA, Longint(Handle),
              Longint(@aCopyData));

  Application.Terminate;
end;
Receiver:

Code:
type
  TFormRecv = class(TForm)
  private
    procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
  end;

// ...

procedure TFormRecv.WMCopyData(var Msg: TWMCopyData);
begin
  ShowMessage(String(Msg.CopyDataStruct.lpData));
end;
MfG,
d3g

thomasdrewermann 7. Sep 2002 06:29

Hat super geklappt, danke für den Source CODE!!!!


MFG
THOMAS

thomasdrewermann 18. Sep 2002 18:11

Irgendwie ist das jetzt unzuverlässig :-(

Hat jemand noch ne Idee warum???
Da kommt nie ne Messagebox, obwohl die namen Stimmen :-(

Luckie 18. Sep 2002 18:53

Messagebox? Die müßtest du dan aber gemacht haben oder?

Sollte eigentlich funktioniern. Überprüf mal, ob das Fensterhandle gültig ist. Sprich, ob der Sender die Daten auch an das richtige Fenster schickt.

thomasdrewermann 18. Sep 2002 20:28

Kann das sein, dass das nur mit sichtbaren Fenstern geht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz