Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
BackColor, TransparencyKey... kein Click-Through ab Windows 8
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 269
Herkunft: Hessen

Themenstarter:

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

beantworten | zitieren | melden

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?)
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 660
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 269
Herkunft: Hessen

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Zitat von Karill Endusa
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...
private Nachricht | Beiträge des Benutzers
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 269
Herkunft: Hessen

Themenstarter:

beantworten | zitieren | melden

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 :/
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers