Einleitung
Dieses HowTo baut auf dem Artikel "C# / .Net - Bildschirmschoner erstellen" auf.Anwendungs - Szenario
Wieso einen Transparenten Bildschirmschoner erstellen? Ein mögliches Anwendungs - Szenario für einen Transparenten Bildschirmschoner könnte folgendermassen aussehen:Sie möchten eine hohe Sicherheit am Arbeitsplatz bieten. Niemand soll etwas an ihrem Computer machen können wenn sie länger abwesend sind. Gleichzeitig wollen Sie jedoch jeder Zeit sehen was auf Ihrem Computer gerade läuft. Nun können sie einfach den Transparenten Bildschirmschoner aktivieren und eine Zeitspanne eingeben, nach der der Bildschirmschoner aktiviert wird. Eventuelle Messdaten oder sonstige Aktivitäten wie Videos laufen immer sichtbar weiter. Sobald jedoch jemand etwas machen will am Computer wird dieser gesperrt und eine Passwortabfrage eingeleitet
Dies kann sehr nützlich sein im Business Umfeld. In der Produktion ist es häufig so, dass der User nicht selbst am Computer ist, aber den Computer trotzdem braucht, weil darauf Messdaten laufen.
Vorbereitung
Dieses HowTo baut auf dem Artikel "C# / .Net - Bildschirmschoner erstellen" auf.Transparenz in .Net / C#
Nachdem wir den Grundbildschirmschoner programmiert haben, fügen wir nun Transparenz hinzu. Bei .Net gibt es mehrere Arten von Transparenz. Wobei nur eine Variante so funktioniert wie wir das wollen.Opacity Value = 40% |
Das sieht im Code dann folgendermassen aus:
this.Opacity = 0.2;
Die folgenden Möglichkeiten funktionieren nicht, da Sie zwar eine Transparenz erzeugen, die aber auch für User Interaktionen gilt. Das heisst, wenn man danach etwas anklickt wird der Event an das dahinter liegende Fenster weitergereicht.
- Bei den Properties der erstellten Form, den TransparencyKey auf die Hintergrundfarbe der Form zu wechseln.
- Eine weitere Möglichkeit ist es den
this.BackColorWert auf
this.BackColor = System.Drawing.Color.Transparent;zu setzen. Dazu muss man Transparenz mit folgendem Code noch erlauben:
this.SetStyle(ControlStyles.SupportsTransparentBackColor, True); - Des weiteren kann man die Transparenz auch mit dem Alpha-Kanal setzen:
this.BackColor = System.Drawing.Color.FromArgb(100, 255, 255, 255);
Bildschirm sperren
Unter Windows kann man den Bildschirm sperren lassen, sobald der Bildschirmschoner beendet wird. Diese Einstellung kann man direkt im Bildschirmschoner Menu aktivieren. Das Problem dabei ist jedoch, dass bei dieser Variante der ganze Explorer ausgeblendet wird.Um dies zu umgehen sperre ich den Computer direkt aus dem Bildschirmschoner heraus.
Als erstes muss die benötigte Funktion aus dem Windows System verfügbar gemacht werden. Dies geht folgendermassen:
class Win32
{
[DllImport("user32.dll")]
public static extern bool LockWorkStation();
}
Man importiert einfach die user32.dll aus dem Win32 System Ordner.{
[DllImport("user32.dll")]
public static extern bool LockWorkStation();
}
Danach kann man diese Funktion aus dem Code heraus verwenden. Um dies zu realisieren habe ich folgende Methode erstellt:
private void lockStation()
{
Win32.LockWorkStation();
Close();
}
Als erstes wird die Workstation gesperrt, danach wird der Bildschirmschoner beendet. Diese Funktion ruft man nun anstatt Close() bei allen User-Events auf.{
Win32.LockWorkStation();
Close();
}
warum postet nicht einer ne solche datei als scr hier?
AntwortenLöschenDas funktioniert so einfach nicht, und hier ist der Grund dafür:
AntwortenLöschenhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms682573(v=vs.85).aspx
Wurde das Projekt jemals auf seine Funktion getestet?