Hallole Ihr,
ich habe die Version von Fluid Byte verwendet um den PC herunterzufahren. Allerdings klappt es bei Win2000 in der Arbeit nicht, bei mir daheim mit XP daheim kein Problem). Auch klappt es nicht, wenn noch eine Anwendung offen ist ( Outlook, Excel ... ).
1.) Gibt es eine Möglichkeit den PC 100% herunterzufahren, egal ob noch Anwendungen offen sind?
2.) Kann das in der Arbeit vielleicht auch daran liegen, weil ich da an ein Netzwerk angemeldet bin?
3.) Gibt es eine Möglichkeit statt dem Herunterfahren einen Restart auszuführen, mit der "Eingabe" von dem Usernamen und Passwort für das Anmelden zum Netzwerk ( vorher in dem Programm gespeichert)? Der Grund für die Frage 3 ist, dass die PC's ab und zu mal heruntergefahren und wieder gestartet werden sollen, um danach wieder besser, schneller zu sein ( ist die Aussage von der IT-Abteilung ?!?! ), aber das dauert eine Weile. So dachte ich mir, schreibste ein Programm, wo das automatisch macht, wenn die Leute in der Mittagspause sind ( PC's sind in der Fertigung ).
Mein Code ist folgender:
Code: Alles auswählen
Procedure ExitWindows(Flags.l)
Protected tkp.TOKEN_PRIVILEGES
Protected tkpNewButIgnored.TOKEN_PRIVILEGES
OpenProcessToken_(GetCurrentProcess_(),#TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY,@hdlTokenHandle)
; Get the LUID for shutdown privilege.
LookupPrivilegeValue_(0,"SeShutdownPrivilege",tkp\Privileges\Luid)
tkp\PrivilegeCount = 1 ; One privilege to set
tkp\Privileges\Attributes = #SE_PRIVILEGE_ENABLED
; Enable the shutdown privilege in the access token of this process.
AdjustTokenPrivileges_(hdlTokenHandle,0,tkp,0,0,0)
ExitWindowsEx_(Flags,0)
EndProcedure
Procedure hauptprogramm()
If OpenWindow(0, 0, 0, 360, 270, "Bilgisayar ne zaman kapatsın?", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
If LoadFont(1, "Arial", 9)
SetGadgetFont(#PB_Default, FontID(1))
EndIf
If CreateGadgetList(WindowID(0))
TextGadget(0, 80, 10, 250, 20, "Lütfen bilgisayarın kapatma zamanını girin")
TextGadget(1, 70, 40, 120, 20, "Tarihi işaretleyin")
TextGadget(2, 245, 40, 40, 20, "Saat")
TextGadget(3, 290, 40, 120, 20, "Dakikka")
CalendarGadget(4, 10, 70, 210, 180)
SpinGadget (5, 240, 70, 40, 20, 0, 23,#PB_Spin_ReadOnly |#PB_Spin_Numeric)
SetGadgetState (5, 0)
SpinGadget (6, 295, 70, 40, 20, 0, 59,#PB_Spin_ReadOnly |#PB_Spin_Numeric)
SetGadgetState (6, 0)
ButtonGadget(7, 240, 150, 100, 30, "Tamam")
EndIf
Repeat
EventID = WaitWindowEvent(1000)
EventGadget = EventGadget()
EventWindow = EventWindow()
MenuID = EventMenu()
Select EventID
Case #PB_Event_CloseWindow
Select EventWindow
Case 0 : quit =1
EndSelect
Case #PB_Event_Gadget
Select EventWindow
Case 0
Select EventGadget
Case 5
SetGadgetText(5, Str(GetGadgetState(5)))
Case 6
SetGadgetText(6, Str(GetGadgetState(6)))
Case 7
datuml.l = GetGadgetState(4)
abschaltjahrs.s=Str(Year(datuml.l))
abschaltmonats.s=Str(Month(datuml.l))
abschalttags.s=Str(Day(datuml.l))
abschaltstundes.s = Str(GetGadgetState(5))
abschaltminutes.s = Str(GetGadgetState(6))
abschaltjahrl.l=Year(datuml.l)
abschaltmonatl.l=Month(datuml.l)
abschalttagl.l=Day(datuml.l)
abschaltstundel.l = GetGadgetState(5)
abschaltminutel.l = GetGadgetState(6)
SetWindowState(0, #PB_Window_Minimize)
;HideWindow(0, 1)
EndSelect
EndSelect
EndSelect
datums.s=FormatDate("%dd:%mm:%yyyy %hh:%ii:%ss",Date())
jahrs.s=FormatDate("%yyyy",Date())
monats.s=FormatDate("%mm",Date())
tags.s=FormatDate("%dd",Date())
stundes.s=FormatDate("%hh",Date())
minutes.s=FormatDate("%ii",Date())
sekundes.s=FormatDate("%ss",Date())
jahrl.l=Val(jahrs.s)
monatl.l=Val(monats.s)
tagl.l=Val(tags.s)
stundel.l=Val(stundes.s)
minutel.l=Val(minutes.s)
;Debug datums.s+" "+jahrs.s+" "+monats.s+" "+tags.s+" "+stundes.s+" "+minutes.s+" "+sekundes.s
;Debug abschaltjahrs.s+" "+abschaltmonats.s+" "+abschalttags.s+" "+abschaltstundes.s+" "+abschaltminutes.s
If abschaltjahrl.l=jahrl.l
If abschaltmonatl.l=monatl.l
If abschalttagl.l=tagl.l
If abschaltstundel.l=stundel.l
If abschaltminutel.l=minutel.l
ExitWindows(#EWX_SHUTDOWN)
;Debug "Abschaltzeit"
EndIf
EndIf
EndIf
EndIf
EndIf
Until quit=1
EndIf
EndProcedure
hauptprogramm()
End