Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Transparentes Fenster, fremdes Fenster (https://www.delphipraxis.net/90927-transparentes-fenster-fremdes-fenster.html)

simjoh 26. Apr 2007 07:37


Transparentes Fenster, fremdes Fenster
 
Hallo,

hab nochmal ne Frage: Ich hab ein transparentes Fenster, dass über einer fremden Anwendung liegt. Wenn dieses fremde Fenster verschoben oder die Größe verändert wird, will ich mein transparentes Fenster "nachziehen", also die Größe und die Position ans fremde Fenster angleichen. Momentan mach ich das über einen Timer, ist aber nicht so schön, hat jemand eine Idee??

Danke.

Mazel 26. Apr 2007 07:49

Re: Transparentes Fenster, fremdes Fenster
 
Wie verschiebst du denn das fremde Fenster, wenn dein transparentes Fenster darüber liegt? Imho muss das Fenster, welches verschoben werden soll den Fokus haben.

simjoh 26. Apr 2007 08:16

Re: Transparentes Fenster, fremdes Fenster
 
Das transparente Fenster hat Borderstyle=bsNone, ich kann "durchklicken" usw.

simjoh 26. Apr 2007 08:17

Re: Transparentes Fenster, fremdes Fenster
 
und: das transparente Fenster wird auf fsStayOnTop gestellt.

Mazel 26. Apr 2007 11:12

Re: Transparentes Fenster, fremdes Fenster
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe im Anhang mal ein Demoprojekt angehängt was dir weiter helfen könnte. Darin befindet sich eine exe die zu Programmstart auf fsStayOnTop geschalten wird und transparent ist, so dass man durchklicken kann. Wenn man nun auf ein Fenstertitel oder ein Window (Button ist auch ein Window) klickt, wird die Position gespeichert. Und wenn man nun das fremde Fenster mit der Maus verschieb, wird die transparente Anwendung ebenfalls verschoben.
Das ganze läuft mit einem Maushook, damit man auch außerhalb an die Anwendungen herankommt.

Solltest du noch Fragen haben, einfach melden.

Gruß
Mazel

simjoh 26. Apr 2007 18:06

Re: Transparentes Fenster, fremdes Fenster
 
Hallo Mazel,

ja wie geil ist das denn? Super, herzlichen Dank.

Ich nehme mal dein Angebot in Anspruch, weiter zu fragen: Das transparente Fenster soll immer über dem gleichen Fenster liegen, deren HWND ich habe. Wenn das verschoben wird oder wenn dessen Größe verändert wird, soll das transparente Fenster mitziehen und sich der Größe des Fensters anpassen. Auf dem transparenten Fenster liegen einige Objekte, die sichtbar sein sollen und auch beispielsweise angeklickt werden können. Geht das auch mit einem Moushook?

Herzliche Grüße
Markus

Mazel 26. Apr 2007 19:04

Re: Transparentes Fenster, fremdes Fenster
 
Da die Form durchklickbar ist, kann auch kein Objekt auf der Form mittels GetCursorPos abgefragt werden. Meiner Meinung nach ist das nicht mit dem Hook möglich.
Man könnte eventuell die globale Cursorposition abfragen und über ein paar Rechnereien die Position des Cusors über den Button überprüfen. Also, da die Form genau an der anderen Form sowohl von Links als auch von Oben anliegt, kann man die Position des Cursor auf dem Desktop ermitteln und dann Links und Oben abziehen. Dann muss man nur noch überprüfen, ob sich der Cursor über dem Button der Form befindet, wenn ja, könnte man ein Klick Simulieren.
Beispiel:

fremde und transparente Form:
links: 700px
oben: 200px

Cursorposition:
links: 756px;
oben: 252px;

Position des Cursors auf der Form:
links: 56px;
oben: 52px;

Ist der Cursor nun über dem Button, kann ein Klick simuliert werden.

Anders wüsste ich nicht wie es gehen sollte.

Gruß
Mazel


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

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