Entwickler-Ecke

Windows API - Von einer Application eine andere aufrufen.


nick-parker - Do 10.04.08 10:25
Titel: Von einer Application eine andere aufrufen.
Hallo, ich habe folgendes Problem.

Ich möchte aus einer Delphi-Application einen Befehl an eine andere Delphi-Application senden, so das dort eine Procedure ausgeführt wird.

Danke schonmal


Xion - Do 10.04.08 11:31

dazu gibts Massen an Topics, daraus habe ich es auch gelernt. Hier mal so der grobe Code


Sender
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TSystemProcs.ActiveProtokoll(Value: Boolean);
var h: THandle;
begin
   if Data.Version.DevelopmentState=True then
      begin
        h:=FindWindow('TNynx2Form'nil);
        SendMessage(H,WM_USER+3,Integer(Value),0);
      end;
end;



Empfänger
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
const 
  WM_SWITCHPROTOKOLL=WM_USER+3;
  procedure SwitchProtokoll(var msg: TMessage); message WM_SWITCHPROTOKOLL;
//[...]
procedure TNynx2Form.SwitchProtokoll(var msg: TMessage);
begin
  Protokoll.Switch(msg);              
end;
//[...]
procedure TProtokoll.Switch(msg: TMessage);
begin
  Active:=Boolean(Msg.wParam);
end;


Delete - Do 10.04.08 13:40
Titel: Re: Von einer Application eine andere aufrufen.
user profile iconnick-parker hat folgendes geschrieben:
Hallo, ich habe folgendes Problem.

Ich möchte aus einer Delphi-Application einen Befehl an eine andere Delphi-Application senden, so das dort eine Procedure ausgeführt wird.

Und was hat jetzt der Titel des Beitrages mit der Frage zu tun?


Timosch - Do 10.04.08 14:07

Der einfachheit halber bezeichne ich im folgenden das Programm, auf das du zugreifst, mit "Server", und das andere mit "Client".
1. Läuft der Server schon? Wenn ja, dann gehe zu zwei, wenn nein, zu drei.
2. Geht es um Ereignisse, die normalerweise beim Server per Mausklick o.ä. ausgeführt werden (also z.B. Klick auf einen Button simulieren? Wenn ja, gehe zu vier, sonst zu fünf.
3. Rufe den Server schlicht und einfach mit einem Parameter auf. (Siehe ParamStr und ParamCount). Das ist die einfachste Lösung. Ende.
4. Dann sende Messages, so wie Xion geschrieben hat. Ende.
5. Bist du Anfänger? Wenn ja, gehe zu 6, sonst gehe zu 7.
6. Verwende DDE, dafür gibt es zwei schöne Komponenten, einfach mal in der Delphi-Hilfe und hier nach DDE suchen. Auch eine ziemlich einfache Variante. Ende.
7. Ist es ein großes, professionelles Projekt? Wenn ja, gehe zu 8, wenn nein, zurück zu 6.
8. Schreibe einen OLE-Server. Das ist die komplizierteste Variante und hier wohl völlig fehl am Platze. Ende.