kostenloser Webspace werbefrei: lima-city


Vb herunterfahren.

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    h******0

    Ich m?chte gerne aus einem Visual Basic Programm meinen Pc herunterfahren aber die bisherigen Skripts klapen nicht.

    Ich habe Windows Xp Home
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Eine (wahrscheinlich komplizierte) L?sung w?re:
    Du erstellst eine Verkn?pfung zu dem "shutdown -s" und rufst diese Verkn?pfung dann mit VisualBasic auf. Denn ich denke nicht, dass du mit VB direkt auf cmd.exe zugreifen kannst. Wenn ja, dann ist es ja einfach. Dann sagst du VB einfach, es soll cmd.exe mit den Erweiterungen shutdown -s starten.

    Hoffe ich konnte halbwegs helfen!
  4. b*********t

    er hat recht, es ist eine komplizierte l?sung
    wenn du schreibst:

    Dim Ergebnis as double
    ergebnis = Shell("shutdown.exe -s")

    dann steht in ergebnis drinne, obs funktioniert hat oder nicht, und der pc f?hrt runter (ich habs nicht getestet, is klar wieso, sollte aber funzen.



    Es gibt noch eine Variante mit API, die funktioniert sicher:


    Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
    ByVal dwReserved As Long) As Long

    Const EWX_FORCE = 4 'Beendet alle Programme ohne zus?tzliche Aufforderung
    Const EWX_LOGOFF = 0 'Meldet sich neu am Netzwerk an
    Const EWX_REBOOT = 2 'Startet den Computer neu
    Const EWX_SHUTDOWN = 1 'F?hrt den Computer herunter
    Const EWX_POWEROFF = 8 'F?hrt den Computer herunter und schaltet ihn ab


    das sind die Deklarationen, und es steht jeweils dran, mit welcher Konstante was gemacht wird. Der Code lautet dann so:

    Public Sub Herunterfahren()

    Dim Result As Long

    Result = ExitWindowsEx(EWX_POWEROFF, 0&)

    If Result <> 0 Then
    MsgBox "Der Computer kann nicht ausgeschaltet werden!"
    End If

    End Sub


    wobei du EWX_Poweroff durch eine beliebige Konstante aus den Deklarationen ersetzen kannst.

    Ich hoffe ich konnte dir helfen.
  5. Autor dieses Themas

    h******0

  6. Geht auch einfacher
    einfach
    Shell: "Shutdown -s"
    oder du kannst ein API Funktion verwenden
  7. @battle-soft:
    Bin momentan auch an einem Proggie, das den PC herunterfahren soll. Funktioniert auch einwandfrei, wenn der Benutzer angemeldet ist. Sinn des Ganzen: In einem Netzwerk, in dem die Sch?ler ab und zu vergessen, ihre PCs abzuschalten, soll ein Steuer-PC zeitgesteuert ein Signal an alle PCs senden, welche folgedessen den PC herunterfahren. Bis hier funktioniert auch alles super, jedoch nur, wenn der Benutzer angemeldet ist. Der Dienst l?uft zwar im abgemeldeten Modus, hat jedoch keine Rechte den PC abzuschalten. Funktioniert dein Code auch in dieser Situation ?
  8. b*********t

    ich hab keine ahnung, probiers mal aus. mit dem netzwerk, da hast du aber schon auf dem zielpc nen prog von dir laufen?? nimmst du winsock??
    ein empf?ngerprog kann nat?rlich nicht laufen, wenn man nicht angemeldet ist. wie w?rs mit einer logoffsperre oder so, also dass dieser zustand, in dem das nicht funktioniert, gar nicht eintreten kann, oder wegen mir einer automatischen anmeldung, also einer meldet sich ab, und der pc meldet sich gleich wieder an...

    wir k?nnen des auch per pn weiterdiskutieren, falls das von irgendwem als "spam" angesehen wird, oder so...
  9. h*********e

    Hallo,
    Also das mit der Verkn?pfung, ist eigentlich un?blich, h?chstens man kennt sich nicht gut aus.

    battle-soft schrieb:
    Declare Function ExitWindowsEx Lib 'user32' (ByVal uFlags As Long, _
    ByVal dwReserved As Long) As Long

    Const EWX_FORCE = 4 'Beendet alle Programme ohne zus?tzliche Aufforderung
    Const EWX_LOGOFF = 0 'Meldet sich neu am Netzwerk an
    Const EWX_REBOOT = 2 'Startet den Computer neu
    Const EWX_SHUTDOWN = 1 'F?hrt den Computer herunter
    Const EWX_POWEROFF = 8 'F?hrt den Computer

    Public Sub Herunterfahren()

    Dim Result As Long

    Result = ExitWindowsEx(EWX_POWEROFF, 0&)

    If Result <> 0 Then
    MsgBox 'Der Computer kann nicht ausgeschaltet werden!'
    End If

    End Sub


    So ist es dann schon besser!
    Hier habe ich noch ein paar Links!

    >Windows in allen Versionen herunterfahren

    http://www.activevb.de/tipps/vb6tipps/tipp0418.html

    >Windows herunterfahren II

    http://www.activevb.de/tipps/vb6tipps/tipp0495.html

    >Herunterfahren des Systems abbrechen

    http://www.activevb.de/tipps/vb6tipps/tipp0647.html


    Der letzte Link ist noch praktisch, leider werden alle Programme geschlossen (kann man ja auch wieder per shell() ?ffnen)!

    mfg HP
  10. @battle-soft:
    Es ist logisch, dass kein Prog laufen kann, wenn kein Nutzer angemeldet ist. Aus diesem Grund startet der Rechner bei Starten automatisch einen Dienst, der per Winsock einen Port abh?rt. ?ber diesen Port sendet der Steuer-PC das Signal zum herunterfahren.

    Dein Vorschlag mit dem Ab- und Anmelden kann ich leider nicht verwenden, da das Programm in einem Schulnetz verwendet werden soll. Da jeder Sch?ler sein eigenen Benutzername und sein eigenes PW hat, muss sich jeder Sch?ler beim Benutzen des Rechners anmelden und danach halt wieder abmelden. So ist auch eine gute Verwaltung des Systems gew?hrleistet.

    Nochmal zu meinem Proggie:
    Das Programm l?uft, auch wenn kein Nutzer angemeldet ist, eben da es ein Dienst ist. Nur leider hat dieser Dienst im abgemeldeten Zustand keine Berechtigung des PC herunterzufahren. Ich werde mal dein Prog ausprobieren und dann das Resultat liefern.
  11. Hab deinen Code (battle-soft) nun mal ausprobiert und feststellen m?ssen, dass er in meiner Situation auch nicht hilft. Versuche jetzt dem Proggi beizubringen, dass er sich im abgemeldeten Zustand im Windows anmelden und danach den Rechner herunterfahren soll. Mal schauen, vll funktionierts ja ;)
  12. b*********t

    nimm tuneup utilities 2006.
    stell ein, dass er automatisch anmeldet. das kann man mit shift unterbinden. jetzt l?sst du davor einen text anzeigen, in dem steht, dass man eben schift dr?cken soll, wenn man in sein eigenes benutzerkonto m?chte. sonst meldet er sich an einem anderen an. von da kannst du ja den empf?nger laufen lassen, ein limit, oder gleich runterfahren.

  13. Hat schon was dein TuneUpUtilities, nur ist das nicht gerade das, was ich m?chte, da hier wiederum die Kontrolle des Netzwerkes und so die der User behindert wird. Aber ich werds mir trotzdem mal anschauen, vielleicht l?ssts sichs doch irgendwie einbinden. Auf jeden THX f?r deine Hilfe !
  14. b*********t

    *g* ich bin so ein tuneup fan. mit dem ding kannst du alles machen, au?er vielleicht fliegen, daf?r haben wir lufthansa.

    also du kannst ja die demo laden, das schnell einstellen, dann wieder runterschmei?en.

    noch eine frage: wie hei?t denn dieser dienst, und wie sprichst duden ?ber lan an. also wenn ich das richtig verstanden habe, hast du einen vbcode, mit dem man einen anderen pc via lan runterfahren kann, ohne dass man da sein eigenes empf?ngerprog laufen haben muss???

    Bitte einfach ein Codebeispiel
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!