Seite 2 von 2
Verfasst: 18.11.2005 17:03
von Kiffi
> ich habe das jetzt so gemacht nur es passiert leider nichts
wird die Prozedur LogOffControl() denn überhaupt angesprungen?
diese drei Zeilen habe ich geändert und bei mir springt er in die Proc:
Code: Alles auswählen
If HH$=>GetGadgetText(#String_0)
If MM$=>GetGadgetText(#String_1)
If SS$=>GetGadgetText(#String_2)
Grüße ... Kiffi
P.S.: Du hast ja noch immer ein [c]Gosub[/c] in Deinem Code! Pöse, Pöse!

Verfasst: 18.11.2005 17:21
von ts-soft
Damit es NT-tauglich ist, änder mal LogoffControl so ab:
Code: Alles auswählen
;-Programm Start
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
Danach nur noch die Fehlerhafte MainLoop reparieren

Verfasst: 18.11.2005 18:05
von Tsuki-Namida
Super das klapt jetzt
Nur noch nicht mit dem Ruhezustand
;LogOffControl(0);Neustart
;LogOffControl(1);Benutzer LogOff
;LogOffControl(2);Runterfahren
;LogOffControl(3);Ruhezustand
Das sind die befehle wie ich sie alle getestet habe.
Nur bei " ;LogOffControl(3);Ruhezustand" fährt mein Rechner runter an stat in den Ruhezustand...
Verfasst: 18.11.2005 23:31
von roherter
Hier wird abgefragt ob der rechner den Ruhezustand unterstützt:
Code: Alles auswählen
If OpenLibrary(0,"powrprof.dll") And IsFunction(0,"SetSuspendState")
erg=CallFunction(0,"IsPwrHibernateAllowed")
If erg=0
MessageRequester ("Ruhezustand wird NICHT unterstützt!","")
Else
MessageRequester ("Ruhezustand wird unterstützt!","")
EndIf
CloseLibrary(0)
EndIf
Und hiermit wird er in den Ruhezustand versetzt:
Verfasst: 19.11.2005 02:51
von Tsuki-Namida
unterstüzen tut es mein system...
aber in den ruhezustand fährt er nicht
hier mein text
Code: Alles auswählen
;-Programm Start
Open_Window_0()
If OpenLibrary(0,"powrprof.dll") And IsFunction(0,"SetSuspendState")
erg=CallFunction(0,"IsPwrHibernateAllowed")
If erg=0
MessageRequester ("Ruhezustand","Ruhezustand wird NICHT unterstützt!")
Else
EndIf
CloseLibrary(0)
EndIf
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
;System Zeit auslesen
Time.l = Date()
HH$ = FormatDate("%hh", Time)
MM$ = FormatDate("%ii", Time)
SS$ = FormatDate("%ss", Time)
;Abfrage für die Aktion die nach ereichen der zeit durchgeführt werden soll.
If HH$=GetGadgetText(#String_0)
If MM$=GetGadgetText(#String_1)
If SS$=GetGadgetText(#String_2)
If go=1
;Die Aktion die durchgefürt wird
If GetGadgetState(#Combo_0)=0
; MessageRequester("Überschrift","Herunterfahren",#PB_MessageRequester_Ok)
LogOffControl(3);Herunterfahren
ElseIf GetGadgetState(#Combo_0)=1
; MessageRequester("Überschrift","Nerstart",#PB_MessageRequester_Ok)
LogOffControl(0); Neustart
ElseIf GetGadgetState(#Combo_0)=2
MessageRequester("Überschrift","Ruhezustand",#PB_MessageRequester_Ok)
CallFunction(0,"SetSuspendState",1,0,0)
EndIf
;MessageRequester("Überschrift","Ok Button",#PB_MessageRequester_Ok)
go.l=0
EndIf
EndIf
EndIf
EndIf
;Einen moment Warten (1Milli Sekunde)
Delay(1)
; Event = WaitWindowEvent()
Event = WindowEvent()
Select event
;-Button abfrage
Case #PB_EventGadget ; verzweigung bei Gadgetevents
Select EventGadgetID()
Case (#Button_0) ;Button "OK"
go.l=1
Case (#Button_1) ;Button "Abbrechen"
Gosub Ende
Return
;MessageRequester("Überschrift","Abbruch Button",#PB_MessageRequester_Ok)
EndSelect
EndSelect
Verfasst: 19.11.2005 09:57
von roherter
Versuchs mal so du must callfunction zwischen openlibary() und closelibary() anwenden!
Code: Alles auswählen
;-Programm Start
Open_Window_0()
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
;System Zeit auslesen
Time.l = Date()
HH$ = FormatDate("%hh", Time)
MM$ = FormatDate("%ii", Time)
SS$ = FormatDate("%ss", Time)
;Abfrage für die Aktion die nach ereichen der zeit durchgeführt werden soll.
If HH$=GetGadgetText(#String_0)
If MM$=GetGadgetText(#String_1)
If SS$=GetGadgetText(#String_2)
If go=1
;Die Aktion die durchgefürt wird
If GetGadgetState(#Combo_0)=0
; MessageRequester("Überschrift","Herunterfahren",#PB_MessageRequester_Ok)
LogOffControl(3);Herunterfahren
ElseIf GetGadgetState(#Combo_0)=1
; MessageRequester("Überschrift","Nerstart",#PB_MessageRequester_Ok)
LogOffControl(0); Neustart
ElseIf GetGadgetState(#Combo_0)=2
MessageRequester("Überschrift","Ruhezustand",#PB_MessageRequester_Ok)
If OpenLibrary(0,"powrprof.dll") And IsFunction(0,"SetSuspendState")
erg=CallFunction(0,"IsPwrHibernateAllowed")
If erg=0
MessageRequester ("Ruhezustand","Ruhezustand wird NICHT unterstützt!")
Else
CallFunction(0,"SetSuspendState",1,0,0)
EndIf
CloseLibrary(0)
EndIf
EndIf
;MessageRequester("Überschrift","Ok Button",#PB_MessageRequester_Ok)
go.l=0
EndIf
EndIf
EndIf
EndIf
;Einen moment Warten (1Milli Sekunde)
Delay(1)
; Event = WaitWindowEvent()
Event = WindowEvent()
Select Event
;-Button abfrage
Case #PB_EventGadget ; verzweigung bei Gadgetevents
Select EventGadgetID()
Case (#Button_0) ;Button "OK"
go.l=1
Case (#Button_1) ;Button "Abbrechen"
Gosub Ende
Return
;MessageRequester("Überschrift","Abbruch Button",#PB_MessageRequester_Ok)
EndSelect
EndSelect