Entwickler-Ecke

Windows API - Kommunikation zweier Delphi Programme auf einem Rechner?


winx - Mo 06.03.06 11:11
Titel: Kommunikation zweier Delphi Programme auf einem Rechner?
Hallo,

ich habe folgendes Problem. Ich will 2 Programme schreiben, die miteinander auf einem Rechner kommunizieren können. Dies ist nötig, da beide Tools auch einzeln laufen sollen (beide mit Oberfläche, Daten, etc).

Nun bin ich am überlegen wie ich mit Delphi32, diese beiden Programme kommunizieren lassen kann, meine erste überlegung hierzu waren die Indy Komponents und TCP/IP. Nur bei der Fülle der Anfragen, bekomme ich da ständig Socket Fehler, etc.

Nun möchte ich das ganze irgendwie anders lösen. Habt ihr vielleicht ne Idee???

Am besten wäre es, wenn das eine Programm irgendwie Funktionen vom anderen aufrufen kann, und eben Daten zurückbekommt (Am besten Objekte, oder eben nur Strings). Denke da an was, was einem Webservice ähnelt.

Habt ihr ne Idee???

Danke,
einx


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Mo 06.03.2006 um 10:22


Christian S. - Mo 06.03.06 11:13

Hallo!

Such im Forum mal nach Suche in der Entwickler-Ecke WM_COPYDATA oder Suche in: Delphi-Library AUCH NUR IN DER LIBRARY

Grüße
Christian


winx - Mo 06.03.06 11:27

Danke :-) ,

aber was ich noch nich schnall, is das erstellen der DLL. Ich hab im Moment zwei eigenständige Programme (.exe), muß ich da eins in ne DLL umwandeln, das möchte ich eigentlich nicht...

hast du nen Beispielsource?


Christian S. - Mo 06.03.06 11:35

DLL? :gruebel:


bnessler - Mo 06.03.06 15:50

Hallo,

mit DLL hat das erstmal ganr nichts zu tun.

Du kannst Deine Programme z.B. mittels WinMessages miteinander kommunizieren lassen.
Funktioniert in etwa wie folgt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
//abhören der Nachrichten
procedure TMainform.AppOnMessage(var Msg: TMSg; var Handled: Boolean);
begin

  case msg.message of

    WM_EigeneMessage1:
      begin
        MachWasTolles();
          Handled := True;
      end;
   
    WM_EigeneMessage2:
      begin
        MachWasAnderesTolles();
          Handled := True;
      end;

Else
Hadnle := False;

end//Case


//Senden der Nachrichten
PostMessage(HandledesGegners, Msg, wParam, lParam);


Gruß
Bernhard


GTA-Place - Mo 06.03.06 20:54

Ich glaube, er ist schon wieder bei nem anderen Thema.

@winx: Pro Frage bitte ein Thread, sonst kommt man schnell durcheinander.
Ist hier übrigens gut zu sehen, falls das mit der DLL eine neue Frage war.