Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fensterposition einer fremden Anwendung ermitteln (https://www.delphipraxis.net/146830-fensterposition-einer-fremden-anwendung-ermitteln.html)

KahPee 27. Jan 2010 17:32


Fensterposition einer fremden Anwendung ermitteln
 
Hi,

ich möchte ein Programm schreiben was auf eine fremde Anwendung zugreift. Dazu brauche ich die Position dieser anderen Anwendung auf dem Desktop. Ich habe schon das Handle des entsprechenden Fensters ermittelt. Desweiteren habe ich diesen Thread schon als Lektüre zur hand genommen.
Allerdings habe ich noch folgendes Problem. ich möchte nicht die obere, linke des fenster haben (außen vom Rand). Sondern die obere, linke Ecke der eigentlichen Form. Also INNEN vom rahmen. So würde es dann z.b. kein unterschied machen ob ich unter vista oder windows das Programm nutze (da haben die fenster ja unterschiedliche Rahmendicken).

Weiß jemand wie sich dieses Problem lösen lässt?

mfg KahPee

Luckie 27. Jan 2010 17:35

Re: Fensterposition einer fremden Anwendung ermitteln
 
Was verstehst du unter "zugreifen"?

KahPee 27. Jan 2010 17:46

Re: Fensterposition einer fremden Anwendung ermitteln
 
Das Zugreifen mach ich über die Maus. Mir kommt es jetzt nur auf die Position des Fensters an. Und hier halt im besonderen auf die innere obere linke ecke

implementation 27. Jan 2010 18:13

Re: Fensterposition einer fremden Anwendung ermitteln
 
Zumindest die obere linke äußere Ecke kannst du mit MSDN-Library durchsuchenGetWindowPlacement / MSDN-Library durchsuchenGetWindowPos / MSDN-Library durchsuchenGetWindowRect ermitteln.
Die Höhe einer normalen Titelbar und die Breite einer Sizebox kannst du dann über MSDN-Library durchsuchenGetSystemMetrics ermitteln.
Ob das Fenster überhaupt eine Titelbar hat, oder nur ein Toolfenster ist, kannst du mit MSDN-Library durchsuchenGetWindowLong (GWL_STYLE) ermitteln.

Damit könntest du die Position nun selber berechnen.

[EDIT]
evtl. könntest du auch noch was mit MSDN-Library durchsuchenGetTitleBarInfo anfangen.


[EDIT]
OK, jetzt kannst du dir die Rechenarbeit doch sparen: MSDN-Library durchsuchenGetWindowInfo erledigt das für dich.

[EDIT]
MSDN-Library durchsuchenGetClientRect übrigens auch.

Luckie 27. Jan 2010 18:53

Re: Fensterposition einer fremden Anwendung ermitteln
 
Zitat:

Zitat von KahPee
Das Zugreifen mach ich über die Maus. Mir kommt es jetzt nur auf die Position des Fensters an. Und hier halt im besonderen auf die innere obere linke ecke

Willst du irgendeinen Button anklicken oder wie? Sag uns doch einfach mal, was du genau machen willst, da findet sich bestimmt eine bessere Möglichkeit. Und wenn das zweite Programm auch von dir ist gibt es noch wesentlich bessere Möglichkeiten der Interprozesskommunikation.

KahPee 27. Jan 2010 21:51

Re: Fensterposition einer fremden Anwendung ermitteln
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von KahPee
Das Zugreifen mach ich über die Maus. Mir kommt es jetzt nur auf die Position des Fensters an. Und hier halt im besonderen auf die innere obere linke ecke

Willst du irgendeinen Button anklicken oder wie? Sag uns doch einfach mal, was du genau machen willst, da findet sich bestimmt eine bessere Möglichkeit. Und wenn das zweite Programm auch von dir ist gibt es noch wesentlich bessere Möglichkeiten der Interprozesskommunikation.

Unter anderem Buttons klicken. Geht aber in diesem Fall nicht anders. Vielen dank für die Antwort denke mal, dass ich damit weiterkommen ;)

mfg KahPee

Luckie 27. Jan 2010 22:54

Re: Fensterposition einer fremden Anwendung ermitteln
 
Ermittle das Handle von der Schaltfläche und schicke eine BM_CLICK Nachricht an das Fenster.


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

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf