| Autor |
Beitrag |
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 29.01.10 01:27
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?
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Sa 30.01.10 18:16
Hi, hast Du dieses msdn.microsoft.com/d...ibrary/bb978915.aspx
mal durchgelesen?
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Sa 30.01.10 19:20
ja.
ich rufe Suspendstate(1,0,0) auf
also sollte es gehn
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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.
rofl
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 31.01.10 17:14
Auch wenn Du mich jetzt für Unwissent hälst
Start->Copmuterauschalten Standby/Ausschalten/Neustarten
Start->Ruhezustand  hab ich nicht, oder nicht aktiv oder welche Einstellung ist das? noch nie gesehen oder benötigt
Bitte um Aufklärung. Bevor ich Dir eine Antwort geben kann.
Es kann ja sein, das ich was in windows noch nicht kenne
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: So 31.01.10 17:18
Wenn der Ruhezustand in den Energieoptionen aktiviert ist, wird der Knopf durch drücken von [SHIFT] sichtbar.
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: So 31.01.10 17:33
Richtig. mit shift.
Alternativ: Standbyschalter funktion auf Ruhezustand legen oder über taskmanager. ist alles das gleiche
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 31.01.10 17:44
Nice, Hab wieder was gelernt
Ergebnis: a)PC im Ruhezustand, per WOL weckbar.
- Bei mir nicht  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
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Flamefire 
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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
Nun ist auch klar warum bei einem es funct und bei andern nicht!
Tut mir Leid das ich da nicht Helfen konnte
Aber teste Dein Prog doch mal auf einem anderen PC!
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|