Ruhezustand deaktivieren
-
Hallo zusammen
Habe da ein kleines Problem, und zwar habe ich ein Service (Client) der ständig Daten zu einem Server schickt, sprich es ist ständig eine Verbindung vorhanden. Wenn ich jetzt aber zum Bsp. kurze Zeit inaktiv bin dann fährt der Computer in den Ruhezustand, und dann bricht ja auch die Verbindung ab. Was ich möchte ist, dass solange mein Service Daten überträgt der Computer nicht in denn Ruhezustand fährt! Oder anders und einfach gesagt, wie kann ich Programmiertechnisch denn Ruhezustand deaktivieren?
Oder wie würdet ihr so was machen?
Nice Day
-
Ist da was dabei?
WIN-Api Power Management Functions
-
volkard hat Dir schon ein schubs gegeben. Würde Dir empfehlen mal diese Funktion anzuschauen.
SetThreadExecutionState()
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373208(v=vs.85).aspx
-
-
Martin Richter schrieb:
The system automatically detects activities such as local keyboard or mouse input, server activity, and changing window focus. Activities that are not automatically detected include disk or CPU activity and video display.
Calling SetThreadExecutionState without ES_CONTINUOUS simply resets the idle timer; to keep the display or system in the working state, the thread must call SetThreadExecutionState periodically.Mich würde hierbei noch interessieren wo dass Limit des Intervalls liegt?
-
-lowbyte- schrieb:
Mich würde hierbei noch interessieren wo dass Limit des Intervalls liegt?
Haste das nicht selber in der Systemsteuerung eingestellt?
-
Jep ... klar.
-
Ist aber gar keine so doofe Frage.
Was wenn man sich darauf verlässt dass 1x alle 45 Sekunden reichen muss, weil man annimmt dass 1 Minute wohl das kürzeste sein wird was man antreffen wird.
Und dann stellt irgend ein irrer 30 Sekunden ein.
(Ich glaube das geht über die GUI gar nicht, aber vielleicht ändert sich die GUI ja irgendwann, oder man kann es direkt über die Registry einstellen oder...)Insofern wäre eine garantierte Mindestdauer schon interessant.
-
hustbaer schrieb:
Ist aber gar keine so doofe Frage.
Was wenn man sich darauf verlässt dass 1x alle 45 Sekunden reichen muss, weil man annimmt dass 1 Minute wohl das kürzeste sein wird was man antreffen wird.
Und dann stellt irgend ein irrer 30 Sekunden ein.
(Ich glaube das geht über die GUI gar nicht, aber vielleicht ändert sich die GUI ja irgendwann, oder man kann es direkt über die Registry einstellen oder...)Insofern wäre eine garantierte Mindestdauer schon interessant.
Könnte man ja On-the-fly ermitteln. Etwa so...
#include <windows.h> #include <stdio.h> #include <PowrProf.h> int main(void) { GLOBAL_POWER_POLICY pGlobalPowerPolicy; POWER_POLICY pPowerPolicy; GetCurrentPowerPolicies(&pGlobalPowerPolicy ,&pPowerPolicy); printf("IdleTimeoutAc :%lu\n",pPowerPolicy.user.IdleTimeoutAc); printf("IdleTimeoutDc :%lu",pPowerPolicy.user.IdleTimeoutDc); return 0; }