Hinter der Eigenschaft Screensaver steht die Klasse _Desktop_ScreenSaver (gb.desktop). Die Klasse setzt Sie in die Lage, die Energieverwaltung und den Bildschirmschoner des Monitors zu verwalten. Diese virtuelle Klasse hat eine Eigenschaft Enabled und 5 Methoden (Activate, Lock, Reset, Resume und Suspend).
Mit dem Aufruf der Methode Resume(Window AS Window) werden die Bildschirmschoner-Funktion und die Energieverwaltung des Monitors wieder aktiviert, nachdem sie ausgesetzt waren. Das als Parameter übergebene Fenster muss das gleiche sein, das bei einem vorangegangenen Aufruf der Methode Suspend(Window AS Window) wurde.
Nach dem Aufruf von Desktop.ScreenSaver.Suspend(FMain.Window) in einem Projekt-Quelltext erscheint diese Meldung in der IDE-Konsole:
lockfile: Forcing lock on "/tmp/xdg-screensaver-hans--0.0.lock"
mit dem Inhalt der Sperr-Datei /tmp/xdg-screensaver-hans–0.0:
52428803:7751
In einem Projekt wurden sowohl die Eigenschaft Enabled als auch die 5 Methoden (Activate, Lock, Reset, Resume und Suspend) eingesetzt, um deren Wirkung zu erproben.
Abbildung 15.1.3.1: Projekt 'ScreenSaver'
Es folgt der komplette Quelltext, dessen wichtigste Passagen kommentiert werden:
[1] ' Gambas class file [2] [3] Public Sub Form_Open() [4] Dim bFlag As Boolean [5] [6] FMain.Center [7] FMain.Resizable = False [8] Desktop.ScreenSaver.Suspend(FMain.Window) [9] [10] ' bFlag = Desktop.ScreenSaver.Enabled [11] ' If bFlag = True Then [12] ' Message.Info("Desktop-Bildschirmschoner eingeschaltet.") [13] ' Else [14] ' Message.Info("Desktop-Bildschirmschoner ausgeschaltet.") [15] ' Endif ' If bFlag = True ? [16] [17] End ' Form_Open() [18] [19] Public Sub btnDSSActivate_Click() [20] Desktop.ScreenSaver.Activate() [21] End ' btnDSSActivate_Click() [22] [23] Public Sub btnDSSLock_Click() [24] Desktop.ScreenSaver.Lock() [25] End ' btnDSSLock_Click() [26] [27] Public Sub btnDSSTest_Click() [28] Desktop.ScreenSaver.Resume(FMain.Window) [29] Desktop.ScreenSaver.Activate() [30] timerDSSWait.Delay = 1000 * 3 [31] timerDSSWait.Start [32] End ' btnDSSTest_Click() [33] [34] Public Sub timerDSSWait_Timer() [35] Desktop.ScreenSaver.Reset() [36] Desktop.ScreenSaver.Suspend(FMain.Window) [37] timerDSSWait.Stop [38] End ' timerWait_Timer() [39] [40] Public Sub btnEnde_Click() [41] Desktop.ScreenSaver.Resume(FMain.Window) [42] Wait 0.05 [43] FMain.Close [44] End ' btnEnde_Click() [45] [46] Public Sub Form_Close() [47] btnEnde_Click() [48] End ' Form_Close()
Kommentar: