Hi,
ich hab auch mal ne Frage..
Als Diagnose-Programm für einen Rechner, auf dem der StandBy-Modus nicht(mehr??)
funktioniert, habe ich ganz einfach die Aufrufmöglichkeiten von ShutDown() in
ein GUI gepackt:
Spoiler anzeigen
;<AutoItScript>
#NoTrayIcon
#include <GUIConstants.au3>
#include <Constants.au3>
;+----------------------------------------------------------------------------+
;| Header: Bestimmen der Übergabeparameter |
;| ( Alles Strings(!!!), bis auf ArgC ) |
;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
Const $Author="Runterfahren.au3 ©2007 by ytwinky, MD"; |
;| EMail: [email='PIII1kSystem-AutoIt3Forum@yahoo.de'][/email] |
;| AutoIt3-Version: aktuelle(beta) |
;| Editor: SciTE aktuelle Version, feste Schriftart |
;| Zweck : Runterfahren in vielen Variationen, geht jetzt(dank trallala) |
;| Tab auf 2 setzen wg. Lesbarkeit |
;+----------------------------------------------------------------------------+
Const $NextUser="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"
;Vorsicht:Schreibt eine Ini-Datei ins Skript-Verzeichnis, wenn's erlaubt ist..DefaultUserName
#Region ### START Koda GUI section ### Form=d:\sprachen\autoit3\au3\kxf\shutdown.kxf
Const $PowerDown=8, $cStandBy=32, $cHibernate=64
Const $DefMsg="gibs nich", $IniFile=@ScriptDir &"\Runterfahren.Ini"
Dim $AppName
$ShutDown = GUICreate("ShutDown", 190, 343, 289, 187)
$Main = GUICtrlCreateGroup("", 0, 0, 189, 341)
$Titel = GUICtrlCreateLabel("Runterfahren", 4, 12, 179, 30, $SS_CENTER)
GUICtrlSetFont(-1, 22, 400, 0, "Arial")
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetTip(-1, "©2007 by ytwinky, MD")
$Flags = GUICtrlCreateGroup("Flags", 8, 52, 173, 61)
$AppName=IniRead($IniFile, "MitGewalt", "Frage", $DefMsg)
$cbMitGewalt = GUICtrlCreateCheckbox("Mit Gewalt", 12, 68, 73, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
If $AppName<>$DefMsg Then GUICtrlSetState(-1, $AppName)
GUICtrlSetTip(-1, "Wenn möglich..")
$cbAusDieMaus = GUICtrlCreateCheckbox("Ausschalten", 100, 68, 77, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, "Rechner(je nach Funktion) ausschalten" &@Lf &"Änderung nur im Quelltext möglich..")
$cbFragen = GUICtrlCreateCheckbox("Immer Fragen", 12, 92, 97, 17)
$AppName=IniRead($IniFile, "ImmerFragen", "Frage", $DefMsg)
If $AppName<>$DefMsg Then GUICtrlSetState($cbFragen, $AppName)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Optionen = GUICtrlCreateGroup("Optionen", 8, 120, 173, 181)
GUICtrlSetFont(-1, 9, 800, 0, "Arial")
$rbAbmelden = GUICtrlCreateRadio("Abmelden", 12, 148, 77, 17)
GUICtrlSetFont(-1, 9, 800, 0, "Arial")
$coNext = GUICtrlCreateCombo("Default", 88, 147, 90, 25)
GUICtrlSetData(-1, "Margot|Erich|Ich|Administrator|Benutzer|Gast")
GUICtrlSetTip(-1, "Nur für Admins..")
$lbNext = GUICtrlCreateLabel("Nächster Benutzer:", 86, 132, 93, 15)
GUICtrlSetTip(-1, "Nur bei Admins..")
$rbNeustart = GUICtrlCreateRadio("Neustart", 12, 168, 69, 17)
GUICtrlSetFont(-1, 9, 800, 0, "Arial")
$rbRuhezustand = GUICtrlCreateRadio("Ruhezustand", 12, 188, 113, 17)
GUICtrlSetFont(-1, 9, 800, 0, "Arial")
$rbRunterfahren = GUICtrlCreateRadio("Runterfahren", 12, 208, 113, 17)
GUICtrlSetFont(-1, 9, 800, 0, "Arial")
$rbStandBy = GUICtrlCreateRadio("StandBy", 12, 228, 113, 17)
GUICtrlSetFont(-1, 9, 800, 0, "Arial")
$lbAndererTitel = GUICtrlCreateLabel("Anderes Programm", 12, 250, 107, 17)
$AppName=IniRead($IniFile, "AppName", "Prog", $DefMsg)
$efAnderes = GUICtrlCreateInput("eingeben oder suchen..", 27, 266, 122, 21)
If $AppName<>$DefMsg Then GUICtrlSetData($efAnderes, $AppName)
$rbAnderes = GUICtrlCreateRadio("", 12, 268, 13, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
If $AppName<>$DefMsg Then GUICtrlSetState(-1, $GUI_ENABLE)
$btSuchen = GUICtrlCreateButton("..", 152, 267, 23, 21, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btQuit = GUICtrlCreateButton("Quit", 104, 308, 75, 25, 0)
GUICtrlSetFont(-1, 11, 800, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
ColorizeIt()
#EndRegion ### END Koda GUI section ###
While 1
$Which=GUIGetMsg()
If GUICtrlRead($cbMitGewalt)=$GUI_CHECKED Then
$Erzwingen=$SD_FORCE
Else
$Erzwingen=0
EndIf
Switch $Which
Case $btQuit, $GUI_EVENT_CLOSE
Exit
Case $btSuchen
$AppName= FileOpenDialog("Andere Anwendung auswählen", "C:\", "Nur Exe-Dateien (*.Exe)|Alle Dateien (*.*)", 3, "existierende Datei suchen..")
If $AppName<>"" Then
GUICtrlSetData($efAnderes, $AppName)
IniWrite($IniFile, "AppName", "Prog", $AppName)
EndIf
Case $cbFragen
IniWrite($IniFile, "ImmerFragen", "Frage", GUICtrlRead($cbFragen))
Case $cbMitGewalt
IniWrite($IniFile, "MitGewalt", "Frage", GUICtrlRead($cbMitGewalt))
ColorizeIt()
Case $coNext
If GUICtrlRead($coNext)<>"Default" And GUICtrlRead($coNext)<>RegRead($NextUser, "DefaultUserName")Then
If IsAdmin() Then
RegWrite($NextUser, "DefaultUserName", "REG_SZ", GUICtrlRead($coNext))
RegWrite($NextUser, "DefaultPassword", "REG_SZ", RegRead($NextUser &"Immer\", GUICtrlRead($coNext)));ggfs. löschen
Else
MsgBox(0, "No, no, never..", "..das dürfen nur Admins..")
EndIf
EndIf
Case $rbAbmelden
DoIt($SD_LOGOFF+$Erzwingen, "abmelden")
Case $rbNeuStart
DoIt($SD_REBOOT+$Erzwingen, "neustarten")
Case $rbRuheZustand
DoIt($cHibernate, "Ruhezustand")
Case $rbRunterfahren
DoIt($SD_SHUTDOWN+$Erzwingen, "runterfahren")
Case $rbStandBy
DoIt($cStandBy, "StandBy")
EndSwitch
Wend
Func _Fragen($Msg)
Return MsgBox(4100, "NagNagNag", "Wirklich " &$Msg &"?")=$IDYes
EndFunc
Func DoIt($What, $Msg)
Dim $Really=GUICtrlRead($cbFragen)=$GUI_UNCHECKED
If Not $Really Then $Really=_Fragen($Msg)
If $Really Then
If ShutDown($What)=0 Then MsgBox(0, "Ooops", "So geht das nicht..")
EndIf
Exit
EndFunc
Func ColorizeIt()
If GUICtrlRead($cbMitGewalt)=$GUI_CHECKED Then
GUICtrlSetColor($cbMitGewalt, 0x800080)
GUICtrlSetColor($rbAbmelden, 0x800080)
GUICtrlSetColor($rbRunterfahren, 0x800080)
GUICtrlSetColor($rbNeustart, 0x800080)
Else
GUICtrlSetColor($cbMitGewalt, 0x000000)
GUICtrlSetColor($rbAbmelden, 0x000000)
GUICtrlSetColor($rbRunterfahren, 0x000000)
GUICtrlSetColor($rbNeustart, 0x000000)
EndIf
EndFunc
;</AutoItScript>
[/autoit]Abmelden, Runterfahren und Neustarten geht problemlos, aber Ruhezustand und StandBy funktionieren nicht.
Bevor jetzt Hinweise auf dieSystemeinstellunge etc. pp. kommen: Mit ShutDownPro funktionieren die Aufrufe.
Also bei meinem Rechner ist alles Okay.
Habe ich was falsch gemacht oder vergessen?
Ich freue mich auf eure Antworten und danke im Voraus
peethebee :
Danke, den AutoIt-schalter kannte ich noch nicht :oops:
[Edit]
..kleine Schönheitsoperation
[Edit]
Das Skript ist berichtigt und funktioniert, Dank an trallala
[Nochn Edit]
..neue Version..
(aber fehlerhaft, wg. C&P, ist jetzt berichtigt..)
Gruß
ytwinky