Windows elegant beenden, neu starten oder den Benutzer wechseln. Die Uhrzeit (18:11:50), Wochentag (Sa.), Tag des Monats (14.) und die IP-Adresse werden eingeblendet. SfB erkennt einen Abbruch der Internetverbindung und meldet: "IP: keine". Bei einer Verknüpfung in den Autostart startet SfB zusammen mit Windows. SfB kann man mit der Esc-Taste bei aktiven Fenster beenden.
SfBv1.9
Icons sind hinzu gekommen,
wie auch ein weiteres Fenster für die Einstellungen.
Der Nutzer kann folgende Einstellungen vornehmen:
- Mit Windows starten Ja/Nein.
- Speicherplatz im Tray anzeigen Ja/Nein.
- Immer im Vordergrund Ja/Nein.
- Auf Update prüfen.
- Einstellungen speichern.
- SfB beenden.
Diese Einstellungen werden in eine SfB.ini-Datei geschrieben
und werden dort vor dem nächsten Start eingelesen.
Weitere Kommentare eingefügt.
Eine History-Liste gibt es in der "SfB.txt-Datei" !
Tipp:
Wer mehr mit seiner "Zeit" anfangen möchte, dem empfehle ich "Digitaluhr" von Oscar.
Script
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icon_41.ico
#AutoIt3Wrapper_Outfile=SfB_v1900.exe
#AutoIt3Wrapper_Res_Description=Shutdown for Benjamin
#AutoIt3Wrapper_Res_Fileversion=1.9.0.0
#AutoIt3Wrapper_Res_LegalCopyright=© 2009 by Ritzelrocker04
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
#AutoIt3Wrapper_Res_Field=Compiled by|Ritzelrocker04
#AutoIt3Wrapper_Res_Field=Original Name|Shutdown for Benjamin
#AutoIt3Wrapper_Run_Tidy=y
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/striponly
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Inet.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit];i ### Wozu #include ###
; _GetIP —> Inet.au3
; $BS_ICON —> ButtonConstants.au3
; $ES_READONLY —> EditConstants.au3
; $GUI_DISABLE —> GUIConstantsEx.au3
; $SS_CENTER —> StaticConstants.au3
; $WS_BORDER —> WindowsConstants.au3
Opt('GUIOnEventMode', 1) ;i 1 Schaltet den OnEvent-Mode ein
Opt('TrayAutoPause', 0) ;i das Script nicht pausieren, wenn auf das Tray-Icon geklickt wird
Opt('GUICloseOnESC', 0) ;i das drücken der ESC-Taste führt nicht zum beenden des Programms
Opt('TrayMenuMode', 1) ;i 1 = kein Standard Menü erstellen
Global $aRes[27] = [@ScriptDir & "\SfBsys\W.ico", @ScriptDir & "\SfBsys\A.ico", _
@ScriptDir & "\SfBsys\N.ico", @ScriptDir & "\SfBsys\S.ico", @ScriptDir & "\SfBsys\i.ico", _
@ScriptDir & "\SfBsys\ix.ico", @ScriptDir & "\SfBsys\c.ico", @ScriptDir & "\SfBsys\16.ico", _
@ScriptDir & "\SfBsys\15.ico", @ScriptDir & "\SfBsys\14.ico", @ScriptDir & "\SfBsys\13.ico", _
@ScriptDir & "\SfBsys\12.ico", @ScriptDir & "\SfBsys\11.ico", @ScriptDir & "\SfBsys\10.ico", _
@ScriptDir & "\SfBsys\9.ico", @ScriptDir & "\SfBsys\8.ico", @ScriptDir & "\SfBsys\7.ico", _
@ScriptDir & "\SfBsys\6.ico", @ScriptDir & "\SfBsys\5.ico", @ScriptDir & "\SfBsys\4.ico", _
@ScriptDir & "\SfBsys\3.ico", @ScriptDir & "\SfBsys\2.ico", @ScriptDir & "\SfBsys\1.ico", _
@ScriptDir & "\SfBsys\0.ico", @ScriptDir & "\SfBsys\32.ico", @ScriptDir & "\SfBsys\appicon.ico", _
@ScriptDir & "\SfBsys\Blau4SfB.bmp"]
;i Ressourcen deklarieren in einem Array
Global $title = "SfB_v1.9.00"
For $z = 0 To 26 ;i statisch kein Ubound - schneller
If Not FileExists($aRes[$z]) Then Exit _
MsgBox(16, 'Error ' & $title, $aRes[$z] & @CRLF & @CRLF & "Datei nicht gefunden ! ")
Next
;i Ressourcen auf Existenz prüfen,
;i fehlende Dateien werden mit Namen benannt - besserer Support ".../W.ico Datei nicht gefunden !"
Global $PublicIP
Global $action
Global $IniRead[3]
Global $aOptCkb[3] = ["Mit Windows starten", "Speicherplatz im Tray", "Immer im Vordergrund"], $aCkbOpt[3]
Global $ini = @ScriptDir & "\SfB.ini" ; Pfad & Name der Ini-Datei
Global $aShutdownBN[7] = ["W", "A", "N", "S", "IP", "IPa", "X"], $aShutdown[7]
Global $ar2D[7][2] = [[' Den Benutzer wechseln ', ' Benutzerwechsel '],[' Den PC herunterfahren ', ' Ausschalten '], _
[' Den PC neu starten ', ' Neustart '],[' Den PC in den Ruhezustand versetzen ', ' Standby '], _
[' Die IP-Adresse anzeigen ', ' IP '],[' Die IP-Adresse ausblenden ', ' IP '],[' Einstellungen & Beenden ', ' Optionen ']]
;i Deklaration - auch der Arrays 1- u. 2D
_iniRead()
$GUI = GUICreate($title, 261, 46, @DesktopWidth - 350, @DesktopHeight - 90, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
$PicGui = GUICtrlCreatePic($aRes[26], 0, 0, 261, 46) ;i Bild einfügen
GUICtrlSetState(-1, $GUI_DISABLE) ;i Bild deaktivieren - Button werden nutzbar
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST") ;i Funktion zum verschieben der Oberfläche
For $i = 0 To 6 ;i 0 bis 6 = 7x CreateButton - statisch kein Ubound - schneller
$aShutdown[$i] = GUICtrlCreateButton($aShutdownBN[$i], 5 + $i * 39, 5, 16, 16, $BS_ICON)
GUICtrlSetImage($aShutdown[$i], $aRes[$i]) ;i Icons in Button einsetzen
GUICtrlSetOnEvent(-1, '_pressed')
GUICtrlSetTip($aShutdown[$i], $ar2D[$i][0], $ar2D[$i][1], 1, 5) ;i Tipp als Ballontip
GUICtrlSetCursor(-1, 0) ;i Cursor als Zeigefinger
Next
$tbTime = GUICtrlCreateInput("", 5, 26, 251, 14, $SS_CENTER, $ES_READONLY)
;! $SS_CENTER - zentrierte Ausgabe; $ES_READONLY - Eingaben nicht möglich
GUICtrlSetBkColor(-1, 0xFFFFFF) ;i weisser Hintergrund
GUISetState(@SW_SHOW, $GUI)
[/autoit] [autoit][/autoit] [autoit];### Start $QuGui ###
$QuGui = GUICreate($title & " Abfrage", 340, 120, -1, -1, $WS_POPUP + $WS_BORDER)
WinSetOnTop($title & " Abfrage", "", 1) ;i Immer im Vordergrund
GUISetBkColor(0xFFFFFF) ;i weisse Hintergrundfarbe des Fensters
$PicQu = GUICtrlCreatePic($aRes[26], 0, 0, 340, 20) ;i Bild einfügen
GUICtrlCreateIcon($aRes[24], -1, 20, 40, 32, 32, BitOR($SS_NOTIFY, $BS_ICON))
$lbQu = GUICtrlCreateLabel("", 60, 50, 260, 17, $SS_CENTER)
$bnQuYes = GUICtrlCreateButton("Ja", 90, 85, 77, 23)
GUICtrlSetOnEvent(-1, '_QuGui')
$bnQuNo = GUICtrlCreateButton("Nö", 173, 85, 77, 23)
GUICtrlSetOnEvent(-1, '_closeQuGui')
;### Ende $QuGui ###
;### Start $OptGui ###
$OptGui = GUICreate($title & " Optionen", 200, 240, -1, -1, $WS_POPUP + $WS_BORDER)
WinSetOnTop($title & " Optionen", "", 1) ;i Immer im Vordergrund
GUISetBkColor(0xFFFFFF) ;i weisse Hintergrundfarbe des Fensters
$PicOpt = GUICtrlCreatePic($aRes[26], 0, 0, 200, 20) ;i Bild einfügen
GUICtrlCreateIcon($aRes[25], -1, 14, 40, 32, 32, BitOR($SS_NOTIFY, $BS_ICON))
For $i = 0 To 2 ;i statisch kein Ubound
$aCkbOpt[$i] = GUICtrlCreateCheckbox($aOptCkb[$i], 60, 52 + $i * 22, 130, 22)
If $IniRead[$i] = 1 Then GUICtrlSetState($aCkbOpt[$i], $GUI_CHECKED)
Next
GUICtrlSetOnEvent($aCkbOpt[0], '_autoStart')
;GUICtrlSetOnEvent($aCkbOpt[1], '_hdd2tray')
GUICtrlSetOnEvent($aCkbOpt[2], '_alwaysOnTop')
$bnOpt1 = GUICtrlCreateButton("Auf Update prüfen", 60, 140, 130, 22)
GUICtrlSetOnEvent(-1, '_UpdateCheck')
$bnOpt2 = GUICtrlCreateButton("Einstellungen speichern", 60, 162, 130, 22)
GUICtrlSetOnEvent(-1, '_write_settings')
$bnOpt3 = GUICtrlCreateButton("SfB Beenden", 60, 184, 130, 22)
GUICtrlSetOnEvent(-1, '_pressed')
GUICtrlCreateLabel("Copyright: © 2009 by Ritzelrocker04", 0, 218, 200, 22, $SS_CENTER)
GUICtrlSetColor(-1, 0x0046D5) ;i blau
;### Ende $QuGui ###
AdlibEnable('_hdd', 5000) ;i Empfehlung AdlibEnable('_hdd', 5000) = 5sek
[/autoit] [autoit][/autoit] [autoit]While 1
$time = @HOUR & ':' & @MIN & ':' & @SEC
$date = @MDAY & '.' & @MON & '.' & @YEAR
Switch @WDAY ;i der Variable täglich den Wochentag zuweisen 1-7
Case 1
$WDAY = " -Sonntag- "
Case 2
$WDAY = " -Montag- "
Case 3
$WDAY = " -Dienstag- "
Case 4
$WDAY = " -Mittwoch- "
Case 5
$WDAY = " -Donnerstag- "
Case 6
$WDAY = " -Freitag- "
Case 7
$WDAY = " -Samstag- "
EndSwitch
GUICtrlSetData($tbTime, $time & $WDAY & $date & $PublicIP)
Sleep(100)
WEnd
Func _hdd()
Local $hdd = StringLeft(@ScriptDir, 2) ;i Das Laufwerk auf dem sich das Script befindet 2-stellig (zB: C:)
Local $hddPro = Round((DriveSpaceTotal($hdd) - DriveSpaceFree($hdd)) / (DriveSpaceTotal($hdd) / 100), 2)
;i prozentual belegter Festplattenplatz gerundet auf 2 Stellen
If BitAND(GUICtrlRead($aCkbOpt[1]), $GUI_CHECKED) Then
TraySetIcon($aRes[Int(.1699 * $hddPro) + 7]) ;i das TrayIcon setzen ; Thx to Oscar
TraySetToolTip("Auf " & $hdd & " sind " & 100 - $hddPro & "% frei ! ")
;i HDD & Prozentzahl im TrayTip ausgeben
Else
TraySetIcon()
TraySetToolTip()
EndIf
EndFunc ;==>_hdd
Func _pressed()
Switch @GUI_CtrlId ;! Der Button bestimmt...
Case 4
GUICtrlSetData($lbQu, $ar2D[0][0] & " ?")
$action = "10000" ;! Codierung => 5 Einstellungen (0=Off 1=Ein)
GUISetState(@SW_SHOW, $QuGui)
;Shutdown(0)
Case 5
GUICtrlSetData($lbQu, $ar2D[1][0] & " ?")
$action = "01000" ;! Codierung => 5 Einstellungen
GUISetState(@SW_SHOW, $QuGui)
;Shutdown(1 +
Case 6
GUICtrlSetData($lbQu, $ar2D[2][0] & " ?")
$action = "00100" ;! Codierung => 5 Einstellungen
GUISetState(@SW_SHOW, $QuGui)
;Shutdown(2)
Case 7
GUICtrlSetData($lbQu, $ar2D[3][0] & " ?")
$action = "00010" ;! Codierung => 5 Einstellungen
GUISetState(@SW_SHOW, $QuGui)
;Shutdown(64)
Case 8
_PublicIP() ;i Aufruf der Funktion
Case 9
$PublicIP = ""
GUICtrlSetBkColor($tbTime, 0xFFFFFF) ;i weisser Hintergrund
Case 10
GUISetState(@SW_SHOW, $OptGui)
Case 24
_write_settings()
GUICtrlSetData($lbQu, $title & " beenden ?")
$action = "00001" ;! Codierung => 5 Einstellungen
GUISetState(@SW_HIDE, $OptGui)
GUISetState(@SW_SHOW, $QuGui)
;Exit
EndSwitch
EndFunc ;==>_pressed
Func _QuGui()
Switch $action ;! ;! Codierung => 5 Einstellungen abfragen
Case 10000
_closeQuGui()
Shutdown(0)
Case 01000
_closeQuGui()
Shutdown(1 +
Case 00100
_closeQuGui()
Shutdown(2)
Case 00010
_closeQuGui()
Shutdown(64)
Case 00001
_closeQuGui()
Exit
EndSwitch
EndFunc ;==>_QuGui
Func _write_settings()
IniWrite($ini, "settings", "AutoStart", GUICtrlRead($aCkbOpt[0]))
IniWrite($ini, "settings", "onTray", GUICtrlRead($aCkbOpt[1]))
IniWrite($ini, "settings", "AlwaysOnTop", GUICtrlRead($aCkbOpt[2]))
_closeOptGui()
_iniRead()
EndFunc ;==>_write_settings
Func _iniRead()
$IniRead[0] = IniRead($ini, "settings", "AutoStart", "0")
$IniRead[1] = IniRead($ini, "settings", "onTray", "0")
$IniRead[2] = IniRead($ini, "settings", "AlwaysOnTop", "0")
EndFunc ;==>_iniRead
Func _autoStart()
If BitAND(GUICtrlRead($aCkbOpt[0]), $GUI_CHECKED) Then
If @Compiled Then FileCreateShortcut(@ScriptFullPath, @StartupDir & '\' & $title) ; Verknüpfung im Autostart erstellen
Else
If @Compiled Then FileDelete(@StartupDir & '\' & $title & '.lnk') ; Verknüpfung löschen
EndIf
EndFunc ;==>_autoStart
Func _alwaysOnTop()
If BitAND(GUICtrlRead($aCkbOpt[2]), $GUI_CHECKED) Then
WinSetOnTop($GUI, "", 1)
Else
WinSetOnTop($GUI, "", 0)
EndIf
EndFunc ;==>_alwaysOnTop
Func _UpdateCheck()
_closeOptGui()
ShellExecute("http://ritzelrocker04.bplaced.net/thema1.htm")
EndFunc ;==>_UpdateCheck
Func _closeQuGui()
GUISetState(@SW_HIDE, $QuGui)
EndFunc ;==>_closeQuGui
Func _closeOptGui()
GUISetState(@SW_HIDE, $OptGui)
EndFunc ;==>_closeOptGui
Func _PublicIP()
$PublicIP = " -IP: " & _GetIP()
If @error Then
$PublicIP = " -IP: keine"
GUICtrlSetBkColor($tbTime, 0xFFFF00) ;i gelber Hintergrund
Else
GUICtrlSetBkColor($tbTime, 0xFFFFFF) ;i weisser Hintergrund
EndIf
EndFunc ;==>_PublicIP
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam) ; Thx to Carsten8
If ($hWnd = $GUI) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTEST
; Ende
[/autoit][align=center]Die aktuelle Version hier:
Download Shutdown for Benjamin - SfB.zip
Viel Spaß mit SfB !