Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Interagierende Anwendungen? (https://www.delphipraxis.net/84544-interagierende-anwendungen.html)

Hirnsausen 18. Jan 2007 11:38


Interagierende Anwendungen?
 
Hallo.

Ich habe eine grundsätzliche Frage, aus der heraus ich evtl. eine Test-Anwendung bauen will:

Ist es möglich, daß eine Anwendung (EXE-Datei) mit einer anderen Anwendung (EXE-Datei) interagiert?

Ich meine sowas:

Anwendung 1 besitzt eine Form mit einem Textfeld drauf, und vieleicht noch einen Button.

Anwendung 2 besitzt ebenfalls ein Textfeld, und ebenfalls einen Button. In das Textfeld der 2. Anwendung schreibe ich einen Wert, und klicke den Button. Diese 2. Anwendung überträgt nun diesen Wert in das Textfeld der ersten Anwendung, und vermag (vieleicht mittels gesteuerten Cursor) auch den Button der 1. Anwendung zu drücken.

Hört sich an, als ob ich irgendeine illegale Anwendung schreiben will, oder? Aber es ist so, daß ich selbst verschiedene Programme schreiben will, die miteinander interagieren können. Ausbaufähige, einzeln erwerbbare Module.

Geht das? Und wenn, wie?

Balu der Bär 18. Jan 2007 11:39

Re: Interagierende Anwendungen?
 
Da kannst einfach das Handle der jeweiligen Anwendung herausfinden und an dieses dann den Text schicken. Über die Forensuche solltest du so einiges finden, hatten wir schon oft. ;)

Grüße

Hirnsausen 18. Jan 2007 17:23

Re: Interagierende Anwendungen?
 
Hmm, danke erstmal. Forensuche? Welches Suchwort? Handle? Ich weiß nicht mal die dafür notwendigen Fachbegriffe (Suchbegriffe), oje.

dominikkv 18. Jan 2007 18:36

Re: Interagierende Anwendungen?
 
jedes fenster (dazu gehören auch buttons und labels) hat unter windows ein Handle...also eine adresse bzw nummer
diese kannst du mit FindWindow und FindWindowEx herausbekommen.
hier mal nen beispielcode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ProgrammHwnd, ButtonHwnd : THandle;
begin

  ProgrammHwnd := FindWindow('Classname','Windowname');
  if ProgrammHwnd > 0 then
    begin
      ButtonHwnd := FindWindowEx(ProgrammHwnd,0,'Class','Name');
      ButtonHwnd := FindWindowEx(ButtonHwnd,0,'Class','Name');
      ButtonHwnd := FindWindowEx(ButtonHwnd,0,'Class','Name');
      if (ButtonHwnd > 0) then
        PostMessage(ButtonHwnd, BM_Click, 0, 0)
        else showMessage('ERROR');
    end;
end;
zuerst musst du das Handle von dem programm mit FindWindow herausfinden... Classname und Windowname musst du mit nem programm rausfinden, zB mit SpyEx
dann musst du das unterhandle von zB dem Tabsheet rausfinden wo dein button drauf ist...dann die GroupBox usw bis du das handle von dem button hast. dann kannst du dem button ein BW_CLICK senden und er wurde gedrückt.
des weiteren ist WinSpy ein nettes tool um die classen und namen rauszufinden... außerdem kann es einen kompletten delphicode produzieren um das richtige handle zu erhalten

SirThornberry 18. Jan 2007 18:56

Re: Interagierende Anwendungen?
 
wenn du Daten zwischen eigenen Anwendungen austauschen willst könntest du dir wm_copydata anschauen oder pipes oder sockets

Hirnsausen 20. Jan 2007 12:29

Re: Interagierende Anwendungen?
 
Danke für Eure Antworten! Doch es geht weiter...

dominikkv: Ich habe WinSpy nun in Benutzung. Wie kann ich nun ermitteln, wie ich das Textfeld soundso und den Button Soundso anspreche? Kannst Du mich kurz anleiten?

Hirnsausen 21. Jan 2007 17:24

Re: Interagierende Anwendungen?
 
Irgend ein Hinweis?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.

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