Gegenteil von SetSystemPowerState, hochfahren aus Standby ?
-
beweg die Maus dann wacht dein Rechner auf
-
Original erstellt von toom:
beweg die Maus dann wacht dein Rechner aufNe, geht nur mit der Tastatur.
-
Yo, aber sowas wird IMHO im BIOS eingestellt.
bei nem fax von 1867 und Win95 vielleicht
so seit 5-6 jahren gibts was das heißt ACPINe, geht nur mit der Tastatur.
stimmt es gab mal ne zeit da war noch kein USB
ich denke auch hier ist nochmal das zauberwort angebracht:
ACPI
-
Wenn du noch erklären tätest, was das ist, dann wären alle glücklich und dein Beitrag nicht so sinnlos.
-
schade, ich habe auch gehofft, er kennt einen Code...
-
ACPI heisst glaub ich "Advanced Control Powermanagement Interface"
Wenn ihr den code habt, postet den bitte für alle.
Wie es scheint sind mehrere interessiert. (incl.meiner Pers.)
-
Original erstellt von toom:
beweg die Maus dann wacht dein Rechner aufNe, geht nur mit der Tastatur.
Also mein PC wacht mit dem AUS-Knopf aus dem StandBy auf ...
-
Hallo,
Also ACPI heißt nix anderes wie: Advanced Configuration and Power Interface
Und dat is im prinzip nix anderes wie ein neues APM, mit dem entscheidenden unterschied, das es eben nix mehr mit dem BIOS zu tun hat (naja fast), sondern vom BS gesteuert wird. Deshalb kann ich z.B. meinen rechner u.a. auch mit der maus aufwecken, wenn ich das häkchen 'Diesem Device erlauben den Computer aus dem Standby zu wecken' oder so, aktiviert hab. Das geht auch bei Fax, Lankarte, Tastatur usw.
Man unterscheidet hier zwischen:
S1 -> normaler suspend
S3 -> suspend, aber der speicher hat noch strom
S4 -> hibernate, alles kommt mal kurz auf die platte
S5 -> da computer ist ausSo, also wie man aus S5 per software wieder nach 'normal an' kommt weiß ich net.
Es geht aber aus S1, S3 und S4. Ich hab mal an einem tool mitgeschrieben, das diese ganzen states durchgeht, den PC ausschalten und nach einer gewissen zeit wieder einschalten kann.
Leider ist das ganze für eine firma und deshalb kann ich auch keinen code posten, mal ganz abgesehn davon, das da auch net alles von mir ist...ich hoff ich hab jetzt so ausm kopf net nur schmarrn geschrieben...
ich könnt stundenlang über ACPI erzählen
-
Ach ja, den artikel fand ich dazu ganz gelungen: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnhdware/html/onnowapp.asp
-
Vielen Dank an RPD !
Der Artikel hat echt genützt !Habe jetzt einen funktionierenden API-Code gebastelt der unter Win98SE einwandfrei läuft !
#include <windows.h> #include <powrprof.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { SYSTEMTIME systime; FILETIME fltime; LARGE_INTEGER *lizeit=NULL; HANDLE wtimer=NULL; GetSystemTime(&systime); // Holt sich die aktuelle Zeit systime.wMinute+=1; // Addiert eine Minute dazu SystemTimeToFileTime(&systime,&fltime); // Konvertiert die systime-Variable in eine FILETIME-Variable lizeit=(LARGE_INTEGER*)&fltime; // dürfte klar sein wtimer=CreateWaitableTimer(NULL,TRUE,"TestTimer"); // Erstellt einen Waitable (Thread) Timer if(!wtimer) { MessageBox(NULL,"CreateWaitableTimer gescheitert","Fehler",MB_OK | MB_ICONERROR); return 1; } if(!SetWaitableTimer(wtimer,lizeit,0,NULL,NULL,TRUE)) // Setzt den Timer auf Start, vorallem der TRUE-Wert am Schluss ist wichtig, denn er holt das System zurück ! { MessageBox(NULL,"SetWaitableTimer gescheitert","Fehler",MB_OK | MB_ICONERROR); return 2; } SetSystemPowerState(0,TRUE); // Hier folgt eigentlich thread-mäßiger programmcode, jetzt nur die Test-Funktion zum Suspend-Modus if(WaitForSingleObject(wtimer,70000)!=WAIT_OBJECT_0) { CancelWaitableTimer(wtimer); CloseHandle(wtimer); MessageBox(NULL,"WaitForSingleObject gescheitert !","Fehler",MB_OK | MB_ICONERROR); } else { CancelWaitableTimer(wtimer); CloseHandle(wtimer); MessageBox(NULL,"Abgelaufen","Hinweis",MB_OK | MB_ICONINFORMATION); } return 0; }
Um die Funktionen SetWaitableTimer / CreateWaitableTimer nutzen zu können, muss man bei VC++ 6 in den C++ Projekteinstellungen das Makro _WIN32_WINNT=0x0500 definieren. Für die Funktion SetSystemPowerState muss beim Linker noch die powrprof.lib eingebunden werden !
Naja vielleicht interessiert der Code ??! :p[ Dieser Beitrag wurde am 10.01.2003 um 18:57 Uhr von BiGFusel editiert. ]
-
Und wie lange muss man warten, bis das System zurückgeholt wird?
-
Wie meinst Du das ? Also in dem Beispiel wird es in einer Minute "systime.wMinute+=1" zurückgeholt. Wenn Du die Zeit meinen solltest, die zwischen dem Status hochfahren -> system bereit liegt, gibt es auch hierfür ne API-Funktion, die ich gestern gelesen habe, leider aber den Namen nicht mehr weiss
-
Danke, das mit der einen Minute wollte ich wissen. Hat auch unter Windows XP funktioniert.
Aber ich musste selbst in den Standy-Modus schalten. Dein Programm hat das nicht gemacht.
Ich glaube das mussSetSystemPowerState(TRUE,TRUE);
heißen.
-
Richtig ! Genau, bei Win98 wird der andere TRUE-Parameter ignoriert (laut MSDN)!
Unter XP musst du glaube ich das Shutdown-Privilege setzen, wie das geht steht glaube ich in den FAQ ![ Dieser Beitrag wurde am 10.01.2003 um 19:00 Uhr von BiGFusel editiert. ]
-
Ne, das war es auch nicht. Hab aber letztens das Beispiel von WebFritzi ausprobiert und da ist er in den Standby-Modus gefahren.
-
Ach jetzt weiß ich wieder woran es lag. Ich hab vergessen das Privileg zu aktivieren. Das ist bei Windows XP nötig.