Ja ich weis es gibt schon 1000 solcher Tool's aber ich möchte ja lernen mit BP umzugehen und zudem ist das mein erstes Tool das ich selber progrmmiert habe *g*.
Hier der Quellcode:
Code: Alles auswählen
;-------------------------------->>>Fenster<<<--------------------------------------------------------
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Frame3D_0
#String_0
#String_1
#String_2
#Button_0
#Button_1
#Button_2
#Combo_0
#Text_1
#Text_3
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 244, 47, 160, 171, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Auschaltenum XX Uhr v.1.0")
If CreateGadgetList(WindowID())
Frame3DGadget(#Frame3D_0, 10, 0, 140, 160, "")
StringGadget(#String_0, 30, 100, 30, 20, "", #PB_String_Numeric)
SendMessage_(GadgetID(#String_0), #EM_LIMITTEXT, 2, 0)
StringGadget(#String_1, 70, 100, 30, 20, "", #PB_String_Numeric)
SendMessage_(GadgetID(#String_1), #EM_LIMITTEXT, 2, 0)
StringGadget(#String_2, 110, 100, 30, 20, "", #PB_String_Numeric)
SendMessage_(GadgetID(#String_2), #EM_LIMITTEXT, 2, 0)
ButtonGadget(#Button_0, 30, 130, 50, 20, "Start")
ButtonGadget(#Button_1, 90, 130, 50, 20, "Abbruch")
ButtonGadget(#Button_2, 13, 8, 135, 20, "Aktion sofort durchführen")
ComboBoxGadget(#Combo_0, 40, 50, 90, 100)
AddGadgetItem(#Combo_0,-1, "Herunterfahren")
AddGadgetItem(#Combo_0,-1, "Neustart")
AddGadgetItem(#Combo_0,-1, "Ruhezustand")
SetGadgetState(#Combo_0, 0)
TextGadget(#Text_1, 40, 30, 80, 20, "Timer Einstellung")
TextGadget(#Text_3, 60, 105, 5, 5, "")
EndIf
EndIf
EndProcedure
;-----------------------------------------------------------------------------------------------------
;----------------------------->>>Programm Start>>>----------------------------------------------------
Open_Window_0() ;Fenster öffnen
;//////////////////////Herunterfahren, Neustart, Abmelden, Ruhezustand Script\\\\\\\\\\\\\\\\\\\\\\\\\
Procedure EnableShutDown()
Privileges.TOKEN_PRIVILEGES
OpenProcessToken_(GetCurrentProcess_(), 40, @hToken)
Privileges\PrivilegeCount = 1
Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid)
AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0)
CloseHandle_(hToken)
EndProcedure
Procedure LogOffControl(flag.l)
EnableShutDown()
Select flag.l
Case 1
ExitWindowsEx_(#EWX_LOGOFF,1)
Case 2
ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_POWEROFF,0)
Case 3
ExitWindowsEx_(#EWX_POWEROFF,0)
Default
ExitWindowsEx_(#EWX_REBOOT,0)
EndSelect
EndProcedure
;//////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Repeat ;Schleife Starten
Time.l = Date() ;System Zeit in die Variabel "Time" einlesen
HH$ = FormatDate("%hh", Time) ;Stunde in Variabel "HH$" von "Time" übernehmen
MM$ = FormatDate("%ii", Time) ;Minute in Variabel "MM$" von "Time" übernehmen
SS$ = FormatDate("%ss", Time) ;Sekunde in Variabel "SS$" von "Time" übernehmen
If HH$=GetGadgetText(#String_0) ;Stunde muss mit der Eingabe übereinstimmen
If MM$=GetGadgetText(#String_1) ;Minute muss mit der Eingabe übereinstimmen
If SS$=GetGadgetText(#String_2) ;Sekunge muss mit der Eingabe übereinstimmen
If go=1 ;Die Variabel "go" muss 1 ergeben (Go bekommt den wert 1 bi betätigen des OK Buttons)
If GetGadgetState(#Combo_0)=0 ;ComboBox Muss auf Herunterfahren stehen
LogOffControl(3);Befehl zum Herunterfahren
ElseIf GetGadgetState(#Combo_0)=1 ;ComboBox muss auf Neustart stehen
LogOffControl(0); Befehl zum Neustart
ElseIf GetGadgetState(#Combo_0)=2 ;ComboBox muss auf Ruhezustand stehen
If OpenLibrary(0,"powrprof.dll") And IsFunction(0,"SetSuspendState") ;Überprüfung ob das System Ruhezustand unterstützt
erg=CallFunction(0,"IsPwrHibernateAllowed") ;Varabel erg bekommt den Wert 0 oder 1
If erg=0 ;Die Variabel "erg" muss 0 haben
MessageRequester ("Ruhezustand","Ruhezustand wird NICHT unterstützt!") ;Meldung das, dass System den Ruhezustand nicht unterstützt
Else ;Anderer Fall (erg muss einen anderen Wert als wie 0 aufweisen)
CallFunction(0,"SetSuspendState",1,0,0) ;Befehl für den Ruhezustand
Gosub Ende
Return
EndIf ;Ende der Bedingung
CloseLibrary(0) ;Ende der Überprüfung
EndIf ;Ende der Bedingung
EndIf ;Ende der Bedingung
go.l=0 ;Die Variabel go bekommt den Wert 0 weil nicht mehr weiter abgefragt werden muss
EndIf ;Ende der Bedingung
EndIf ;Ende der Bedingung
EndIf ;Ende der Bedingung
EndIf ;Ende der Bedingung
Delay(1) ;Warten 1 milli Sekunde
Event = WindowEvent() ;Program wird auf ein Eventvorbereitet
Select Event ;Aktion für ein Event
Case #PB_EventGadget ; verzweigung bei Gadgetevents
Select EventGadgetID() ;Starten der Button abfrage
Case (#Button_0) ;Button "OK"
If go=1
MessageRequester ("Info","Der Timer ist bereits gestartet!")
Else
go.l=1 ;Ok wurde gedrückt und die Variabel go erhält den Wert 1
EndIf
Case (#Button_1) ;Button "Abbrechen"
If go=1
MessageRequester ("Info","Timer ist gestopt.")
go.l=0
Else
Gosub Ende ;Abbruch wurde gedrückt und der Befehl "gosub" lässt das Programm zur kennzeichnung "Ende" springen
Return ;damit Gosub wirksam wird
EndIf
Case (#Button_2) ;Button "Aktion sofort durchführen"
Result = MessageRequester("Frage","Möchten Sie die Aktion wirklich durchführen?",#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes ; Ja-Schalter wurde gedrückt
If GetGadgetState(#Combo_0)=0 ;ComboBox Muss auf Herunterfahren stehen
LogOffControl(3);Befehl zum Herunterfahren
ElseIf GetGadgetState(#Combo_0)=1 ;ComboBox muss auf Neustart stehen
LogOffControl(0); Befehl zum Neustart
ElseIf GetGadgetState(#Combo_0)=2 ;ComboBox muss auf Ruhezustand stehen
If OpenLibrary(0,"powrprof.dll") And IsFunction(0,"SetSuspendState") ;Überprüfung ob das System Ruhezustand unterstützt
erg=CallFunction(0,"IsPwrHibernateAllowed") ;Varabel erg bekommt den Wert 0 oder 1
If erg=0 ;Die Variabel "erg" muss 0 haben
MessageRequester ("Ruhezustand","Ruhezustand wird NICHT unterstützt!") ;Meldung das, dass System den Ruhezustand nicht unterstützt
Else ;Anderer Fall (erg muss einen anderen Wert als wie 0 aufweisen)
CallFunction(0,"SetSuspendState",1,0,0) ;Befehl für den Ruhezustand
Gosub Ende
Return
EndIf ;Ende der Bedingung
Else ; Nein-Schalter wurde gedrückt
EndIf
EndIf
EndIf
EndSelect ;Ende der abfrage
EndSelect ;Ende der abfrage
Until Event = #PB_EventCloseWindow ;Fenster wird geschlossen
Ende: ;Gosub Kennzeichnung
End ;Ende Des Programms
PS: Bei Win9x kommt die Meldung das "Ruhezustand" nicht unterstützt wird da es bei Win 9x noch nicht unterstützt wird.
MfG:
Kain