*Restart / *Shutdown

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Tron_HB

Betreff: *Restart / *Shutdown

BeitragSo, Dez 16, 2007 10:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy
hallo Blitzer,

ich möchte nach einem Speichervorgang einen Neustart vom
Programm ausführen lassen. Wie kann ich sowas einsetzen Question

... fröhlichen 3. Advent Exclamation
Projekte:

AMD Athlon XP 3200+ auf K7N2 Delta2 Platinum; 2,19 GHz; nVidia Raedon 9250+ ;
768 MB RAM
BB3d + C++

peacemaker

BeitragSo, Dez 16, 2007 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt irgendso nen Parameter für ExecFile. Sonst musst du Forensuche anschmeissen, hatte da auch ma so einen, der damit die Schulpcs abschalten wollte....

MfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

d-bug

BeitragSo, Dez 16, 2007 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es sich dabei um BMax auf ausschließlich Windows handeln sollte, dann nutze folgenden Code:

Code: [AUSKLAPPEN]
'Shutdownlib


?win32
   Import "-lkernel32"
   Import "-ladvapi32"
?

'-- INITIALISIERUNG --
Extern "Win32"
   Function OpenProcessToken (ProcessHandle:Int, DesiredAccess:Int, TokenHandle:Byte Ptr)
   Function LookupPrivilegeValue (lpSystemName$z, lpName$z, lpLuid:Byte Ptr) = "LookupPrivilegeValueA@12"
   Function AdjustTokenPrivileges (TokenHandle:Int, DisableAllPrivileges:Int, NewState:Byte Ptr,BufferLength:Int, PreviousState:Byte Ptr, ReturnLength:Byte Ptr)
   Function GetVersion ()
   Function GetCurrentProcess ()
   Function SetSystemPowerState (fSuspend:Int, fForce:Int)
   Function ExitWindowsEx (uFlags:Int,dwReserved:Int=0)
   Function GetLastError ()
End Extern


Private
   Function EnableShutdownPrivileges:Int ()
         ?win32
            Const TOKEN_ADJUST_PRIVILEGES:Int = $20
            Const TOKEN_QUERY:Int = $8
            Const SE_PRIVILEGE_ENABLED:Int = $2
            Local tokenPrivilege:Int[4]
            If LookupPrivilegeValue(Null, "SeShutdownPrivilege", Byte Ptr(tokenPrivilege)+4)
               Local hProc:Int = GetCurrentProcess() ' -1
               Local hToken:Int
               If OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, Varptr(hToken))
                  tokenPrivilege[0] = 1
                  tokenPrivilege[3] = SE_PRIVILEGE_ENABLED
                  If AdjustTokenPrivileges(hToken, False, Byte Ptr(tokenPrivilege), Null, Null, Null)
                     Return True
                  EndIf
               EndIf
            EndIf
         ?
      End Function
Public


'Rechner in Hibernation versetzen
Function ForceHibernation ()
      ?debug
         WriteStdout("Hibernate") ; End
      ?win32
         If EnableShutdownPrivileges()
            SetSystemPowerState(True, False)
         EndIf
      ?
   End Function


'Rechner in StandBy versetzen
Function ForceStandby ()
      ?debug
         WriteStdout("Standby") ; End
      ?win32
         If EnableShutdownPrivileges()
            SetSystemPowerState(False, False)
         EndIf
      ?
   End Function


'Benutzer ausloggen
Function ForceLogOff ()
      ?debug
         WriteStdout("LogOff") ; End
      ?win32
         If EnableShutdownPrivileges()
            ExitWindowsEx $0 | $4 * False
         EndIf
      ?
   End Function


'Rechner herunterfahren
Function ForceShutdown ()
      ?debug
         WriteStdout("Shutdown") ; End
      ?win32
         If EnableShutdownPrivileges()
            ExitWindowsEx $8 | $4 * False
         EndIf
      ?
   End Function


'Rechner neu starten
Function ForceRestart ()
      ?debug
         WriteStdout("Restart") ; End
      ?win32
         If EnableShutdownPrivileges()
            ExitWindowsEx $2 | $4 * False
         EndIf
      ?
   End Function

Geeecko

BeitragSo, Dez 16, 2007 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenns um Max geht, im Corearchiv auf der ersten seite gucken. Viel kürzer.
....

d-bug

BeitragSo, Dez 16, 2007 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder hab ich mich jetzt nicht verlesen, und er möchte einen Neustart des Rechners vom Programm ausführen
lassen, oder ich hab mich verlesen und er möchte das Programm neu starten lassen...

Bei ersterem ist mein Code der richtige und bei zweitem der aus dem Codearchiv von BlitzCoder...

cheers

Tron_HB

Betreff: Thx ..

BeitragSo, Dez 16, 2007 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
hat sich schon erledigt ...
ich habe es mit execfile realisiert.
obwohl mir ein neustart lieber wäre Wink
Projekte:

AMD Athlon XP 3200+ auf K7N2 Delta2 Platinum; 2,19 GHz; nVidia Raedon 9250+ ;
768 MB RAM
BB3d + C++

Geeecko

BeitragSo, Dez 16, 2007 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
d-bug: Wenn er den Rechner neustarten will. gehts aber noch kürzer.
ExecFile(blablabla... Oder ich habe jetzt etwas falsch verstanden...
....

Pdd

BeitragSo, Dez 16, 2007 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Rechner neustarten geht mit "shutdown -r -f". Müsste man halt die exe aufrufen.
Lieber Apfel als Birne.

d-bug

BeitragSo, Dez 16, 2007 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ignoranten! Man zeigt euch einen Weg, der nicht über das allseits unbeliebte shutdown.exe führt und ihr zerreißt einen in der Luft... Very Happy

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group