Entwickler-Ecke
Off Topic - WOL geht nur bei manuellen Ruhezustand
Flamefire - Fr 29.01.10 01:27
Titel: WOL geht nur bei manuellen Ruhezustand
Ich hab einen PC (Dimension 4550) hinter einem Speedport W701v, den ich per WOL fernstarten möchte.
Das geht dummerweise NUR, wenn ich den Netzschalter zum Beenden von windows verwende (In den Energieoptionen ist für den der Ruhezustand eingetragen, geht auch) oder über Start->beenden.
Nur dann reagiert er auf das Magic Packet.
Wenn ich den PC vollkommen runterfahre oder per Befehl ("powrprof.dll,SetSuspendState Hibernate" oder SetSuspendState(true,false,false) ) dann reagiert er gar nicht da drauf.
Warum das? Wie kann ich den per Programm in den "anderen" Ruezustand versetzen?
Flamefire - Sa 30.01.10 19:20
ja.
ich rufe Suspendstate(1,0,0) auf
also sollte es gehn
ALF - Sa 30.01.10 19:35
ist mir doch klar.
ich meine ob Du den Aufruf so machst wie vorgegeben, um die richtige Meldung zu erhalten!
So müsstest Du ja auch die Meldung erhalten, ob es geht oder nicht!
Gruss ALf
Flamefire - So 31.01.10 00:51
Hmm, was meinst du genau?
Am Ende fährt der PC definitiv in den Ruhezustand, nicht standby und fehler sonst werden auch keine ausgegeben
ALF - So 31.01.10 04:02
Für Standby-Modus ist der Übergabewert 0. Nicht 1.
Bei richtigen Aufruf:
| Zitat: |
Liefert die Funktion SetSuspendState einen Wert ungleich 0 zurück, so war der Aufruf erfolgreich. Bei einer Rückgabe von 0 war der Aufruf erfolglos - die Fehlerursache können Sie dann über die Fehlernummer aus Err.LastDllError ermitteln |
Testest Du vorher auf IsPwrHibernateAllowed?
Hast Du die Möglichkeit, Dein Prog auf einen anderen Pc zu testen?
Ansonsten Poste mal die Procedure, sonst wird es nur ein rumraten :?
Gruss Alf
Flamefire - So 31.01.10 12:29
Ich will ja Ruhezustand --> Wert 1
Testen brauche ich nicht, da ich WEIß, dass der Ruhezustand aktiviert ist. Darum entfällt auch eine Prüfung des Rückgabewertes, da der PC offensichtlich in den Ruhezustand fährt.
Code Wäre:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL stdcall = nil;
function LinkAPI(const module, functionname: string): Pointer; forward;
function SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean; begin if not Assigned(_SetSuspendState) then @_SetSuspendState := LinkAPI('POWRPROF.dll', 'SetSuspendState'); if Assigned(_SetSuspendState) then Result := _SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent) else Result := False; end;
function LinkAPI(const module, functionname: string): Pointer; var hLib: HMODULE; begin hLib := GetModulehandle(PChar(module)); if hLib = 0 then hLib := LoadLibrary(PChar(module)); if hLib <> 0 then Result := getProcAddress(hLib, PChar(functionname)) else Result := nil; end; |
Aufruf einer der beiden (bei beiden das gleiche Ergebnis)
Delphi-Quelltext
1: 2: 3: 4:
| shellexecute(0,'open','rundll32.exe','powrprof.dll,SetSuspendState Hibernate', nil, SW_SHOW); |
Problem ist NICHT, dass er nicht in den Ruhezustand fährt, sondern dass er sich nicht wieder wecken lässt.
Wenn man den gleichen PC ohne Veränderungen per Start->Beenden->Ruhezustand in den Ruhezustand fährt, funktioniert es aber.
ALF - So 31.01.10 16:25
Hi,
ist ja richtig kompliziert, nicht der Code sondern die einstellungen in Windoof Energieoptionen
Egal was Du für Parameter übergibst,
er führt den code so aus, welche Einstellung in Energieoptionen/Ruhezustand eingestellt ist.
Sobald Du in Energieoptionen/Ruhezustand, das aktivierts, fährt er komplet runter.(er ist ausgeschaltet) warum auch immer.
Unabhängig von Energieoptionen/Erweitert und CodeParameter.
Wenn das Deaktiviert ist, geht er im sogenannten Standby Modus und WOL funct.
Unabhängig was Du in Energieoptionen/Erweitert einstellst oder CodeParameter steht.
:eyes: :nut:
rofl
Gruss ALf
Flamefire - So 31.01.10 16:47
Ich versteh dich nicht.
Nochmal das Problem kurz:
Ausgangszustand: 1 PC läuft, Ruhezustand aktiviert
Aktion: a)Ruhezustand per Start->Ruhezustand
b)Ruehzustand durch obigen Code
Ergebnis: a)PC im Ruhezustand, per WOL weckbar
b)PC im Ruhezustand, nicht per WOL weckbar
ALF - So 31.01.10 17:14
Auch wenn Du mich jetzt für Unwissent hälst
Start->Copmuterauschalten Standby/Ausschalten/Neustarten
Start->Ruhezustand :roll: hab ich nicht, oder nicht aktiv oder welche Einstellung ist das? noch nie gesehen oder benötigt
:oops:
Bitte um Aufklärung. Bevor ich Dir eine Antwort geben kann.
Es kann ja sein, das ich was in windows noch nicht kenne :wink:
Gruss ALf
Boldar - So 31.01.10 17:18
Wenn der Ruhezustand in den Energieoptionen aktiviert ist, wird der Knopf durch drücken von [SHIFT] sichtbar.
Flamefire - So 31.01.10 17:33
Richtig. mit shift.
Alternativ: Standbyschalter funktion auf Ruhezustand legen oder über taskmanager. ist alles das gleiche
ALF - So 31.01.10 17:44
Nice, Hab wieder was gelernt :beer:
Ergebnis: a)PC im Ruhezustand, per WOL weckbar.
- Bei mir nicht :hair: keine Ahnung warum. Vermute irgendwas mit Board oder Bios. Rechner ist komplett Down.
- lediglich die Einstellungen (geöffnete Fenster usw.) bleiben erhalten.
b)PC im Ruhezustand, nicht per WOL weckbar. so ist es bei mir auch.
mh.... jetzt bin ich sprachlos und gebe auf :nixweiss: :gruebel:
Gruss Alf
Flamefire - So 31.01.10 18:32
WOL muss aktiviert werden.
BIOS, und unter windows:
gerätemanager: Gerät kann pc ruhezustand wecken. (Eigenschaften vom netzwerkadapter)
Eigendlich funktioniert es bei komplett ausgeschaltetem PC. Leider bei diesem speziellen nur aus dem ruhezustand. seltsam aber ist so
ALF - So 31.01.10 19:03
mh..
Bios, WOL ist aktiv.
Netzwerk Eigenschaft, nur Standbymodus, Ruhezustand nix.
NVIDIA nForce 10/100/1000 MbPs
Man lernt nie aus, welche vielen kleine unterschiede es gibt bei den PC(Boards/Bios NetzKarten).
Damit soll windows nun klar kommen und alles richtig machen :lol:
Nun ist auch klar warum bei einem es funct und bei andern nicht!
Tut mir Leid das ich da nicht Helfen konnte :cry:
Aber teste Dein Prog doch mal auf einem anderen PC!
Gruss Alf
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!