VB: Herunterfahren-Button

windowsvistafan

Cadet 3rd Year
Registriert
Okt. 2007
Beiträge
37
Hallo Forum, bin neu hier und habe eine Frage: Ich programmiere mit Visual Basic Express Edition 2005. Ich arbeite an einem Projekt wo ich gerne so etwas haben würde:Ich möchte dann auf einen Button klicken, und dann soll sich der Computer herunterfahren/Neu starten/Sich abmelden.... Ich habe schon in google gesucht, ein paar Seite gefunden und diese Codes versucht aber sie funktionieren nicht. Könnte mir jemand einen Code dafür verraten wie das geht mit dem Button-Klick, dass sich der PC dann herunterfährt. Der Code sollte unbedingt auf Windows XP und Windows Vista dann funktionieren! :)

Danke schon mal! :cool_alt:
 
Mit Boardmitteln geht das nicht, aber WMI kann das zum Beispiel und kann auch sehr gut in VB.Net integriert werden. Damit kann man dann sogar per Remote andere Rechner im Netzwerk herunterfahren ;)
 
WMI bedeutet Windows Management Instrumentations und beinhaltet Befehle um Window Systeme (eigentlich) per Scriptsprache wie WSH zu administrieren (z.B. Dateifreigabe erstellen, Systeminformationen eines Remote-Rechners auslesen). Allerdings kann man WMI auch in .Net integrieren, indem man zunächst einen Verweis auf System.Management hinzufügt (In Visual Studio auf Projekt -> Verweis hinzufügen klicken).

Hier findest du ein paar WMI-Skripte, welche aber in VBS (WSH-Scriptsprache) geschrieben sind, aber eingentlich ist die Anpassung nicht schwer.
 
Das hab ich jetzt mal schnell selbst geschrieben, aber nur bis zum Shutdown getestet (Ich will meinen Rechner jetzt nicht runterfahren). Wenn du eine Fehlermeldung bekommst, poste diese einfach mal. Den Verweis (oder Referenz wie es in VB.Net glaube ich heißt), musst du noch hinzufügen, unter Projekt -> Verweis (oder Referenz) hinzufügen -> System.Management

Code:
       Dim ms As New System.Management.ManagementScope("\\.\root\cimv2")
        Dim query As New System.Management.ObjectQuery("select * from Win32_OperatingSystem")
        Dim searcher As New System.Management.ManagementObjectSearcher(ms, query)

        For Each obj As System.Management.ManagementObject In searcher.Get()
            obj.InvokeMethod("Shutdown", Nothing)
        Next
 
Zuletzt bearbeitet:
Hi, ich habe eszur Probe erst mal in ein neues leeren Projekt gemacht. Wenn ich dann auf Debuggen klicke, öffnet sich ja das ganze. Erst kommt kein fehler, aber dann wenn ich auf den button klicke, zeigt er das normale VB Code Fenster an mit folgendem Fehler:
http://www.loaditup.de/136920.html

Wenn ich versuche die Datei zu schließen (Nicht VB sondern die Exe) blockiert der und ich muss auf "Sofort Beenden" klicken...
 
Wenn Visual Studio im Quellcode stehen bleibt, dann ist während der Ausführung ein Fehler aufgetreten. Du brauchst das Programm dann nicht mit "Sofort beenden" abschießen, sondern du kannst auf das Stopp-Symbol in Visual Studio klicken. Allerdings sollte zusätzlich eine Meldung ausgegeben werden (ist auf deinem Screenshot irgendwie nicht zu erkennen).

Ich hab meinen Quelltext jetzt auch mal ausprobiert - naja immerhin sind meine Updates, die noch auf den Neustart gewartet haben jetzt installiert ;)

Probier mal den folgenden Code und poste die Fehlermeldung:
Code:
        Try
            Dim ms As New System.Management.ManagementScope("\\.\root\cimv2")
            Dim query As New System.Management.ObjectQuery("select * from Win32_OperatingSystem")
            Dim searcher As New System.Management.ManagementObjectSearcher(ms, query)

            For Each obj As System.Management.ManagementObject In searcher.Get()
                obj.InvokeMethod("Shutdown", Nothing)
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
 
Die WIN-API wäre auch möglich, allerdings könnte man per WMI das Programm leicht erweitern um Remote-Rechner herunterzufahren.
 
Hi,
ich hab mal den Code von
http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=dotnet/tipps/tip0035.shtml

genommen und ein Beispielprojekt erstellt. Ist im Ahang.
Grüße
$ui

P.S.: Ich seh gerade, wenn man dem Link folgt hat man das ganze nochmal für den Framework 1.0, ganz unten unter Download. Mein angehängtes Programm ist für den Framwork 2.0. (Ist aber keine große Änderung)
 

Anhänge

Zuletzt bearbeitet:
Hallo nochmal,
Vielen Dank für dein Beispielprojjekt, da ist das auch mit den Kontrollkästchen... Aber ich hatte gestern Abend schon den Code für das Herunterfahren gefunden. Einfach im Click_Ereignis des Buttons folgendes eingeben:
Process.Start("shutdown.exe", "-s -f -t 0")

Dann funktioniert das mit dem herunterfahren! :cool_alt:
 
Kein Problem.
Deine Lösung funktioniert zwar auch, ist aber in meinen Augen etwas ähm... wie soll ich sagen, etwas improvisiert und gebastelt. ^^
Na egal, einfacher geht es nicht und wenn Vista auch noch eine shutdown.exe hat und das mit den Sicherheitseinstellungen kompatibel ist dann funktioniert es ja wie es soll. :)
Sonst kann man es immer noch ändern.
 
Zurück
Oben