Laden...

BackColor, TransparencyKey... kein Click-Through ab Windows 8

Erstellt von Somakia vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.873 Views
S
Somakia Themenstarter:in
269 Beiträge seit 2010
vor 10 Jahren
BackColor, TransparencyKey... kein Click-Through ab Windows 8

Guten Morgen liebe MyC# Community,

Ich habe hier eine Windows Forms Anwendung, welche mir auf dem Bildschirm verschiedene Informationen anzeigt.
Damit ich diese Informationen (fast) immer im Blick habe, ist das Fenster dafür TopMost = true.
Damit es mich möglichst wenig stört, habe ich über den Trick TransparencyKey = BackColor den Hintergrund entfernt (Form ist eh BorderStyle.None).
Bis vor einiger Zeit hatte ich noch Windows 7, mitlerweile nutze ich aber auch Windows 8.
Seit dieser Umstellung habe ich nun das nervige Problem, dass ich nicht mehr durch den durchsichtigen Hintergrund hindurch klicken kann, was insofern schlecht ist, wenn sich dort hinter Objekte befinden (z.B. Desktop Icons), an welche ich beizeiten heran muss... aktuell behelfe ich mir hier mit TAB + Enter, aber das kann ja schlecht die Lösung sein 😃

Ich hatte es schon mit SetWindowLong und WS_EX_LAYERED | WS_EX_TRANSPARENT probiert, aber dann verschwinden die in der Form enthaltenen Controls ja leider auch 😕

Meine Frage nun:
Gibt es auch unter Windows 8 eine Möglichkeit, dieses Verhalten zu erreichen? (Transparenter Hintergrund + hindurch klicken) (Und wenn ja, wie geht das?)

P
660 Beiträge seit 2008
vor 10 Jahren

Hallo, was du versuchen könntest wäre es deine Form zu einem Child des Desktops zu machen

Hier ist ein Beispiel wie Notepad in die eigene Form gequetscht wird aber das Beispiel dürfte sich auf
dein Problem leicht anpassen lassen (ja ich weiss, es ist vb6 Code, aber die API ist immernoch die
gleiche)

Fremdes Fenster in eigenes Fenster einbinden

was noch fehlen dürfte wäre die API um den Desktop handle zu ermitteln.

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

2.891 Beiträge seit 2004
vor 10 Jahren

Hm, also ich kann bei meinem Windows 8 durch ein simples Fenster mit TransparencyKey = BackColor durchklicken.
Bist du sicher, dass es nicht noch an etwas anderem liegt (eigene Verarbeitung von Window-Messages oder so)? Vll. mal [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden probieren.

S
Somakia Themenstarter:in
269 Beiträge seit 2010
vor 10 Jahren

Hallo dN!3L,

danke für deine Anregungen, aber ein entsprechendes Testprojekt habe ich schon angelegt ... das Problem bleibt bestehen.
Ich habe in dem Testprojekt nur BackColor, TransparencyKey und TopMost gesetzt.
Es könnte natürlich jetzt an der Kombination mit TopMost liegen, da durch die Metro-Oberfläche, soweit ich gehört hab, eine (unsichtbare) Schicht dazu gekommen sein soll.

2.891 Beiträge seit 2004
vor 10 Jahren

Es könnte natürlich jetzt an der Kombination mit TopMost liegen[...]

Also bei mir nicht. Auch mit TopMost=true kann ich da einfach hindurch klicken.
Häng doch mal dein Testprojekt an...

S
Somakia Themenstarter:in
269 Beiträge seit 2010
vor 10 Jahren

Wahnsinn aber wahr:
Es scheint mit der ausgewählten Farbe zu tun zu haben...
Nehme ich Control als BackColor und TransparencyKey geht es, nehme ich LightPink für beides geht es nicht...
Ich werde hier noch ein wenig herumprobieren, aber logisch ist das für mich nicht mehr.
Danke für die bisher geleistete Hilfe... dann muss ich mal gucken, ob ich eine Farbe finde, mit der das geht, was ich vorhabe, welche ich sonst in der Form nicht brauche 😕

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Karill Endusa,

möglicherweise ein Problem mit [erledigt] Color Properties stimmen nicht mit RGB-Wert überein?. Direkt oder Indirekt. Versuche es testweise mal nur mit (unbenannten) Farben, die du über ihre RGB-Werte erzeugst.

herbivore