FindWindow - Unterschied zu Delphi

Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Re: FindWindow - Unterschied zu Delphi

Beitrag von Uwe_9988 »

Hallo Theo,

also gut. Warum nicht? :)

Ich suche also eine Möglichkeit um einer Lazarus-Anwendung über eine andere Lazarusanwendung eine Message zu schicken, in der ich ihr über einen einfachen Integer mitteile, was sie tun soll. Beide Anwendungen sind Eigenentwicklungen und verfügen über eine GUI.

Bisherige Ansätze waren FindWindow und PostMessage aus der Win32-API.

Wie sollte ich das am besten mit Lazarus plattformunabhängig lösen auch wenn die Anwendungen nur unter Windows laufen sollen?

Ein paar zielführende Stichworte würden mir genügen... ;)


Grüße,
Uwe

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FindWindow - Unterschied zu Delphi

Beitrag von af0815 »

IPC Lazarus bei Google zB.

IPC in der Forumsuche

oder ganz einfach die Sourcen rund um Lazarus und das Lazarus-ccr (am besten aus dem SVN)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: FindWindow - Unterschied zu Delphi

Beitrag von theo »

Uwe_9988 hat geschrieben:Ein paar zielführende Stichworte würden mir genügen... ;)


Plattformübergreifend: Tab "System" -> TSimpleIPCClient/Server.

Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Re: FindWindow - Unterschied zu Delphi

Beitrag von Uwe_9988 »

Danke an alle!

Ein erster Ansatz funktioniert schonmal. Die Abfrage ob die Anwendung schon läuft... ;)

Code: Alles auswählen

program FindWindowTest; // ohne FindWindow ;-)
 
//...
 
uses
//...
 
  simpleipc;
 
//... 
var
  Srv : TSimpleIPCServer;
  Clt : TSimpleIPCClient;
 
begin
  {$I FindWindowTest.lrs}
  // Programm nur einmal starten
  Application.Initialize;
  Clt := TSimpleIPCClient.Create(nil);
  try
    Clt.ServerID := 'OneAndOnly4535435';
    if Clt.ServerRunning then
      Application.Terminate;
  finally
    Clt.Free;
  end;
  if not Application.Terminated then
  begin
    Srv := TSimpleIPCServer.Create(nil);
    try
      Srv.ServerID := 'OneAndOnly4535435';
      Srv.Global := True;
      Srv.StartServer;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    finally
      Srv.Free;
    end;
  end;
end.


Werde mal testen ob das so unter Linux läuft. ;)


Grüße,
Uwe

Antworten