![]() |
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? |
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 |
Re: Interagierende Anwendungen?
Hmm, danke erstmal. Forensuche? Welches Suchwort? Handle? Ich weiß nicht mal die dafür notwendigen Fachbegriffe (Suchbegriffe), oje.
|
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:
zuerst musst du das Handle von dem programm mit FindWindow herausfinden... Classname und Windowname musst du mit nem programm rausfinden, zB mit
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; ![]() 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 ![]() |
Re: Interagierende Anwendungen?
wenn du Daten zwischen eigenen Anwendungen austauschen willst könntest du dir wm_copydata anschauen oder pipes oder sockets
|
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? |
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