[VisualBasic] [.Net] Shutdown befehle öffnet Form neu

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von XxXRecklessXxX, 28. August 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 28. August 2007
    [.Net] Shutdown befehle öffnet Form neu

    also ich wollte heute eigentlich hier nicht mehr posten .. aber es is grad was merkwürdiges passiert..

    ich bastel an einem programm das den pc runterfahren soll .. zeitgesteuert und auch sofort
    nun es hat auch schon funktioniert ..
    der befehlt lautet einfach
    Code:
    System.Diagnostics.Process.Start("Shutdown", "/s")
    
    und hab auch einen button der es wieder abbrechen soll
    Code:
    System.Diagnostics.Process.Start("Shutdown", "/a")
    
    wie gesagt es hat schon funktioniert .. und grade will ich es nochmal testen, der debugger kommt zu dem genannten quellcode mit dem shutdown befehl und genau an dieser stelle öffnet er die Form ein 2tes mal .. und wenn ich dann den abbrech-button drücke öffnet er auch die Form erneut .. WIESO? ich habe nichts verändert und vorhin hats doch funktioniert..

    greetzs
     
  2. 28. August 2007
    AW: Shutdown befehle öffnet Form neu

    lös das mal so:

    code:
    Code:
    Option Explicit
    
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    'Api
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, BufferLength As Any, PreviousState As Any, ReturnLength As Any) As Long
     
    Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    
    Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
    
    Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
    
    Private Declare Function GetCurrentProcess Lib "kernel32.dll" () As Long
    
    Private Const SE_SHUTDOWN_NAME As String = "SeShutdownPrivilege"
    Private Const TOKEN_ADJUST_PRIVILEGES As Long = &H20
    Private Const SE_PRIVILEGE_ENABLED As Long = &H2
    
    Private Type LUID
     lowpart As Long
     highpart As Long
    End Type
    
    Private Type LUID_AND_ATTRIBUTES
     pLuid As LUID
     Attributes As Long
    End Type
    
    Private Type TOKEN_PRIVILEGES
     PrivilegeCount As Long
     Privileges As LUID_AND_ATTRIBUTES
    End Type
    
    
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    'Funktionen
    '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    '+++++++++++++++++++++++++++++++++++++++++++++
    'Machine_Shutdown
    '+++++++++++++++++++++++++++++++++++++++++++++
    Public Sub Machine_Shutdown(ByRef Method As Long)
     Dim Handle As Long
     On Error Resume Next
     
     Machine_Shutdown_Call
     
     Handle = ExitWindowsEx(Method, 0&)
    End Sub
    
    '+++++++++++++++++++++++++++++++++++++++++++++
    'Machine_Shutdown_Call
    '+++++++++++++++++++++++++++++++++++++++++++++
    Public Sub Machine_Shutdown_Call()
     Dim a As Long
     Dim Temp1 As LUID
     Dim Temp2 As TOKEN_PRIVILEGES
     Dim Handle As Long
     On Error Resume Next
     
     Handle = OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, a)
     If Handle = 0 Then
     Exit Sub
     End If
     
     Handle = LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, Temp1)
     If Handle = 0 Then
     Exit Sub
     End If
     
     Temp2.PrivilegeCount = 1
     Temp2.Privileges.Attributes = SE_PRIVILEGE_ENABLED
     Temp2.Privileges.pLuid.highpart = Temp1.highpart
     Temp2.Privileges.pLuid.lowpart = Temp1.lowpart
    
     Handle = AdjustTokenPrivileges(a, 0, Temp2, ByVal CLng(0), ByVal CLng(0), ByVal CLng(0))
     If Handle = 0 Then
     Exit Sub
     End If
    End Sub
    
    aufruf:
    Code:
    Machine_Shutdown 0& 'LogOff
    Machine_Shutdown 1& 'Shutdown
    Machine_Shutdown 2& 'Reboot
    
     
  3. 28. August 2007
    AW: Shutdown befehle öffnet Form neu

    Code:
    Shell "shutdown -s", vbHide
    Das vllt?
     
  4. 29. August 2007
    AW: Shutdown befehle öffnet Form neu

    @hardwarehunger

    thx für den code aber erstens wenn ich ihn einfüge kommen viele fehlermeldungen die ich jetzt alle bereinigt habe und wenn ich ihn jetzt ausführe passiert gar nichts .. der timer läuft ab und nichts passiert

    fehler sind zB.:
    Code:
     Handle = AdjustTokenPrivileges(a, 0, Temp2, ByVal CLng(0), ByVal CLng(0),ByVal CLng(0))
    
    da unterwellt er mir das "ByVal"

    Code:
    Private Type LUID
    
    hab ich alle auf "private structure" ändern müssen

    Code:
    ByVal BufferLength As any
    
    any kennt er in vb.net nicht mehr




    @Titus91
    mit deiner lösung passiert auch nichts

    ich verstehe nicht wieso es vorher noch geklappt hat
    bw habt ihr aber
     
  5. 29. August 2007
    AW: Shutdown befehle öffnet Form neu

    nurmal so nebenbei, es gibt nen .net präfix. das würde vlt bei einigen viewern mehr klarheit verschaffen.

    die api funzt auch in .net, du musst sie nur richtig implementieren - msdn.
     
  6. 29. August 2007
    AW: Shutdown befehle öffnet Form neu

    sry aber bin halt noch noob
    kannst mir nicht genauer erklären wo ich es implementieren muss?
    und was soll das mit dem präfix?
     
  7. 29. August 2007
    AW: Shutdown befehle öffnet Form neu

    Schau dir das mal an:
    http://custom.programming-in.net/articles/art9-1.asp?f=InitiateSystemShutdown
     
  8. 29. August 2007
    AW: Shutdown befehle öffnet Form neu

    zur implementierung siehe pyro
    das mit dem präfix mein ich nur weil du visual basic angegeben hast, offensichtlich aber mit .net rumhantierst >> .net präfix wählen.
     
  9. 29. August 2007
    AW: Shutdown befehle öffnet Form neu

    Hab hab titel mal angepasst und eigentlich sollte dir pyro's post eigentlich alles sagen was du wissen musst!

    Wenn nicht dann google doch einfach nochmal wie man sowas implementier/benutzzt und dann kannste ja wenn du nicht mehr weiterkommst hier nochmal fragen

    Knusperkeks
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.