AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Transparentes Fenster, fremdes Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Transparentes Fenster, fremdes Fenster

Ein Thema von simjoh · begonnen am 26. Apr 2007 · letzter Beitrag vom 26. Apr 2007
Antwort Antwort
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#1

Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 07:37
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#2

Re: Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 07:49
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.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 08:16
Das transparente Fenster hat Borderstyle=bsNone, ich kann "durchklicken" usw.
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 08:17
und: das transparente Fenster wird auf fsStayOnTop gestellt.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 11:12
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
Angehängte Dateien
Dateityp: zip mousehook_und_transparentes_fenster_202.zip (192,0 KB, 27x aufgerufen)
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 18:06
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
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#7

Re: Transparentes Fenster, fremdes Fenster

  Alt 26. Apr 2007, 19:04
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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 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