Vb herunterfahren.
lima-city → Forum → Programmiersprachen → Basic
abgemeldeten zustand
aufforderung
automatischen anmeldung
beliebige konstante
benutzer
benutzerkonto
computer
deklaration
dienen
ergebnis
netzwerk
nutzer
pc
result
schulnetz
signal
situation
steuer
window
zustand
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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! -
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. -
Ja Danke
-
Geht auch einfacher
einfach
Shell: "Shutdown -s"
oder du kannst ein API Funktion verwenden
-
@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 ? -
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... -
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 -
@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. -
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 ;)
-
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.
-
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 !
-
*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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage