Autor |
Beitrag |
Eugen
Hält's aus hier
Beiträge: 9
|
Verfasst: So 21.07.02 21:41
 Wie "versetze" ich den Rechner in StandBy unter Win98?
|
|
OregonGhost
      
Beiträge: 215
|
Verfasst: So 21.07.02 22:00
Microsoft hat folgendes geschrieben: |
SetSuspendState
The SetSuspendState function suspends the system by shutting power down. Depending on the Hibernate parameter, the system either enters a suspend (sleep) state or hibernation (S4).
|
Quelltext 1:
| function SetSuspendState( Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean; stdcall; |
Alles klar oder was?
Am besten, du setzt für Hibernate false, und für ForceCritical true, und für DisableWakeEvent false.
_________________ Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
|
|
Eugen 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 23.07.02 17:26
Titel: Frage
 Danke für die StandBy Funktion. Aber ich weiss nicht, welche Bibliotheken ich einbinden muss, damit die Funktion lauffähig wird. Oder muss ich einen Verweis auf kernel.dll machen oder so was?
|
|
OregonGhost
      
Beiträge: 215
|
Verfasst: Mi 24.07.02 10:13
Also, in C muss man Powrprof.h und Powrprof.lib einbinden...
Probier's doch mal mit
Quelltext 1:
| function SetSuspendState( Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean; stdcall; external 'powrprof.dll'; |
Ach ja, sollte das nicht funktionieren, solltest du statt Boolean Integer angeben, weil in Win32 BOOL als int definiert ist.
_________________ Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
|
|
Eugen 
Hält's aus hier
Beiträge: 9
|
Verfasst: Do 25.07.02 22:08
Die Funktion SetSuspendState existiert tatsächlich in powrprof.dll. Ich hab auch verschiedene Variationen ausprobiert, aber der Computer reagiert in keiner Weise drauf. Vielleicht fehlt da ein Parameter? Ich hab auch den Integer-Fall getestet, aber es gibt keine Reaktion auf 0 oder 1. Möglicherweise sind andere Zahlen erwartet
Gruss Eugen.
|
|
hitstec
      
Beiträge: 295
|
Verfasst: Do 25.07.02 23:39
Versuchs mal damit. Den Codeschnippsel habe ich in Google-Groups gefunden. Habe aber keine Zeit mich damit auseinanderzusetzen.
Falls du die Lösung hast, dann poste sie doch bitte hier rein.
Auf den ersten Blick: LinkAPI ist dazu da, um eine Funktion dynamisch aus einer DLL zu laden. SetSuspendState hat drei Bool-Parameter und gibt eine Bool-Variable zurück.
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: 30: 31: 32: 33: 34:
| Var _SetSuspendState: Function( Hibernate, ForceCritical, DisableWakeEvent: BOOL ): BOOL stdcall = nil;
Function LinkAPI( const module, functionname: String ): Pointer; forward;
// You would export this function from a unit 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; |
Danke.
|
|
SpeedyGTD
      
Beiträge: 89
|
Verfasst: So 28.07.02 12:15
Ich hab mir vor ein paar Tagen bei [url] www.Torry.net[/url] die ABF Komponenten Runtergeladen, da gibt es die Komponente abfShutdown damit geht das ganz einfach.
|
|
Eugen 
Hält's aus hier
Beiträge: 9
|
Verfasst: Mo 29.07.02 23:41
Hi, folks. Danke für eure umfangreiche Hilfe bei der Lösung dieser Frage. Mein Rechner aber will auf SetSuspendState nicht reagieren. Womöglich liegt's daran, dass ein "Herunterfahren"- Update von Windows, das ich vor etwa 6 Monaten gemacht hat, diese Funktion ausser Gefecht gesetzt hat. Danach ist auch die StandBy-funktion verschwunden. Deswegen wollte ich wissen wie sich so was in Delphi bewerkstelligen lässt. Das war also die (traurige  ) Vorgeschichte.
Jetzt zum Code. Die Vorschläge von OregonGhost und hitstec werden einwandfrei compiliert. Es passiert dennoch gar nichts. Ich lasse die Anwendung von meinen Freunden testen, die noch über StandBy verfügen. Dann verschaffe ich die Klarheit, ob der Code nicht stimmt oder Windows rumspinnt. bis dann. Eugen.
Ich hab gerade die von SpeedyGTD erwähnte Componente heruntergeladen. Delphi mekert beim Compilieren. Ich muss die noch checken.
|
|
SpeedyGTD
      
Beiträge: 89
|
Verfasst: Di 30.07.02 00:22
Also bei mir funktionieren die einwandfrei, wo hast du sie denn hinkopiert?
Ich hab aber auch Windows XP vieleicht ist es dafür optimiert. Ich hab die komponenten direkt in den Delphi Ordner kopiert.
|
|
Basti
      
Beiträge: 345
Windows Vista
D2005 Pers, D7 Pers
|
Verfasst: Fr 29.10.04 16:53
Also ich habe StandBy mal hiermit versucht:
Delphi-Quelltext 1:
| SetSystemPowerState(true, false); |
Ging aber leider nicht.
Jetzt habe ich diesen Beitrag hier gefunden und will
SetSuspendState verwenden.
Allerdings meckert er mir, dass er den Befehl nicht kennt.
Welche Unit muss ich da einbinden? 
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Fr 29.10.04 17:27
Laut MS Platform SDK wird SetSuspendState nicht von Windows 95 und Windows NT unterstützt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean; var _SetSuspendState: function(Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL; stdcall; LibMod: HMODULE; begin
Result := False; LibMod := LoadLibrary('POWRPROF.DLL');
if LibMod <> 0 then begin _SetSuspendState := GetProcAddress(LibMod, 'SetSuspendState'); if Assigned(_SetSuspendState) then Result := _SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent); FreeLibrary(LibMod); end;
end; |
Edit: Hatte FreeLibrary vergessen. 
_________________ Ciao, Sprint.
|
|
Basti
      
Beiträge: 345
Windows Vista
D2005 Pers, D7 Pers
|
Verfasst: Fr 29.10.04 17:56
Und wie bekomme ich einen Rechner mit XP nun in den StandBy Modus?
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Fr 29.10.04 18:17
Basti hat folgendes geschrieben: | Und wie bekomme ich einen Rechner mit XP nun in den StandBy Modus? |
Indem du mal auf [url]http//msdn.microsoft.com[/url] gehst und dir die Seiten zu den WinAPI Funktionen SETSUSPENDSTATE, SETSYSTEMPOWERSTATE, EXITWINDOWSEX, INITIATESYSTEMSHUTDOWN und INITIATESYSTEMSHUTDOWNEX durch ließt.
_________________ Ciao, Sprint.
|
|
Basti
      
Beiträge: 345
Windows Vista
D2005 Pers, D7 Pers
|
Verfasst: Fr 29.10.04 18:37
Hmm - also SetSuspendState und WxitWindowsEx kannte ich schon,
die anderen kenne ich jetzt.
Dumm ist bloß, dass man immer Herunterfahren, Neustarten und Abmelden liest,
aber nie StandBy, was ich ja eigentlich will. 
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Fr 29.10.04 18:41
Basti hat folgendes geschrieben: | Hmm - also SetSuspendState und WxitWindowsEx kannte ich schon,
die anderen kenne ich jetzt.
Dumm ist bloß, dass man immer Herunterfahren, Neustarten und Abmelden liest,
aber nie StandBy, was ich ja eigentlich will.  |
Dann rufe doch einfach mal die Funktion SetSuspendState (True, Flase, False) auf, die ich vorhin geschrieben habe und schaue an was passiert. 
_________________ Ciao, Sprint.
|
|
Basti
      
Beiträge: 345
Windows Vista
D2005 Pers, D7 Pers
|
Verfasst: Fr 29.10.04 19:01
Äh - peinlich peinlich.
Ich weiß nicht welche Unit ich dafür brauch, sonst würde ich es machen
Edit: Ich habe WinXP - geht das da auch?
Mit dem Herunterfahren geht es da ja nicht so einfach...
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Fr 29.10.04 21:23
Basti hat folgendes geschrieben: | Äh - peinlich peinlich.
Ich weiß nicht welche Unit ich dafür brauch, sonst würde ich es machen |
Kopiere doch einfach mal den Code, den ich geschrieben habe und rufe diese Funktion auf. Außer Windows.pas brauchst du wohl keine andere.
Zitat: | Ich habe WinXP - geht das da auch? Mit dem Herunterfahren geht es da ja nicht so einfach... |
Ich hab' den Code heute selber geschrieben und unter Windows XP Pro getestet. Reicht dir das als Antwort.
_________________ Ciao, Sprint.
|
|
Basti
      
Beiträge: 345
Windows Vista
D2005 Pers, D7 Pers
|
Verfasst: Sa 30.10.04 11:17
[Edit] Gelöscht - Ich möchte nicht, dass ihr meine Blödheit seht [/Edit]
Zuletzt bearbeitet von Basti am Sa 30.10.04 11:37, insgesamt 1-mal bearbeitet
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Sa 30.10.04 11:32
Basti hat folgendes geschrieben: | Kommt mir also recht fremd vor... |
OregonGhost hat folgendes geschrieben: | function SetSuspendState( Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean; stdcall; external 'powrprof.dll'; |
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|