Autor Beitrag
Eugen
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 21.07.02 21:41 
:?: Wie "versetze" ich den Rechner in StandBy unter Win98?
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: 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).

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 23.07.02 17:26 
Titel: Frage
:D 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Mi 24.07.02 10:13 
Also, in C muss man Powrprof.h und Powrprof.lib einbinden...

Probier's doch mal mit
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: 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.

ausblenden volle Höhe 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:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Fr 29.10.04 16:53 
Also ich habe StandBy mal hiermit versucht:
ausblenden 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? :roll:
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Fr 29.10.04 17:27 
Laut MS Platform SDK wird SetSuspendState nicht von Windows 95 und Windows NT unterstützt.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Fr 29.10.04 17:56 
Und wie bekomme ich einen Rechner mit XP nun in den StandBy Modus?
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: 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 Suche im MSDN SETSUSPENDSTATE, Suche im MSDN SETSYSTEMPOWERSTATE, Suche im MSDN EXITWINDOWSEX, Suche im MSDN INITIATESYSTEMSHUTDOWN und Suche im MSDN INITIATESYSTEMSHUTDOWNEX durch ließt.

_________________
Ciao, Sprint.
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: 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. :wink:

_________________
Ciao, Sprint.
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: 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