Feedback

C# - Überprüfen ob Glass verfügbar ist

Veröffentlicht von am 12/29/2006
(3 Bewertungen)
Unter Vista gibt es einen tollen Effekt namens "Glass". Mit diesem kann man den Hintergrund von Winforms wie ein Milchglass erscheinen lassen. So wird abgefragt ob Glass verfügbar ist:
private bool isGlassAvailable()
{
	[DllImport("dwmapi.dll")]static extern void DwmIsCompositionEnabled(ref bool pfEnabled);
	bool isGlassSupported = false;
	DwmIsCompositionEnabled(ref isGlassSupported);
	return isGlassSupported;
}
Abgelegt unter Vista, Glass.

5 Kommentare zum Snippet

Koopakiller schrieb am 3/2/2013:
Soweit nicht schlecht, aber es wird eine Exception geworfen wenn man es unter einem älteren Windows als Vista ausführt. Diese würde ich gleich in der Methode abfangen und dann false zurück geben.
dariusarnold schrieb am 3/3/2013:
Und was nützt eim zu wissen ob das Verfügbar ist??

Ein weiteres Snippet, wie man das einbauen oder anwenden kann wäre super. :)

LG, Darius.
Koopakiller schrieb am 3/3/2013:
Sie dir mal den Internet Explorer 9 oder auchden Windows Explorer an. Die Windows Titelleiste scheint größer zu sein. Wenn man versucht den Effekt zu aktivieren und es schief geht, dann stürtzt die Anwendung entweder ab (Exception) oder es gibt einen schwarzen Hintergrund beides ist unschön, weswegen man es vorher abfragen sollte. Aktivieren kann man den Effekt sobald das Fenster geladen wurde. Dort würde ich die Methode dann auch ausführen.
Zum aktivieren des Effekts, siehe: http://blogs.msdn.com/b/olivers/archive/2011/01/08/windows-7-wie-aktiviert-man-den-aero-glass-effekt-in-wpf-anwendungen.aspx
dariusarnold schrieb am 3/5/2013:
Jo, das ist mir aufgefallen..
Ich wollte nur Ausdrücken - ohne das negativ zu meinen -, dass das Snippet praktischer wäre, wenn die Verwendung des Effektes zumindest verlinkt wäre, aber Danke für den Luink.. :) Hat auch jemand was für WinForms??
Koopakiller schrieb am 3/6/2013:
Direkt zu WinForms hab ich jetzt auch nichts, aber im Grunde läufts genauso ab. Nur das man das Handle anders bekommt:
IntPtr hwnd = new WindowInteropHelper(window).Handle; //WPF
IntPtr hwnd = form.Handle;//WinForms

Wichtig dabei ist das form die Instanz der Form ist, die du "transparent" gestalten willst.
Eine Verlinkung wäre aber wirklich nicht schlecht ;)
 

Logge dich ein, um hier zu kommentieren!