Hallo und danke schonmal für den Link!
Habe schon mit dem ThreadExecutionState herumexperimentiert. Effektiv kann ich über ES_AWAYMODE_REQUIRED und ES_CONTINUOUS verhindern, dass der Rechner in den Ruhezustand fährt (wohlbemerkt, ich will hiermit nicht das automatische in-den-Ruhezusand-Versetzen verhindern, das geht damit ja ohne weiteres, sondern den vom Benutzer initiierten Vorgang, z.B. durch Zuklappen eines Laptops o.ä.), allerdings sperrt der Rechner sich dann. Im Grunde könnte ich natürlich noch abfragen, ob der Rechner gesperrt ist und dann Abmeldung durchführen, danach den Rechner in den Ruhezustand versetzen. Allerdings habe ich keine Möglichkeit gefunden zu unterscheiden, ob der Rechner gewollt gesperrt wurde, oder durch das Verhindern des Ruhezustandes gesperrt worden ist. In beiden Fällen gibt es eine SessionChange Message, die aber nur besagt, dass ein lock / unlock stattgefunden hat. Außerdem gibt es beim Setzen von ES_AWAYMODE_REQUIRED und ES_CONTINUOUS keine WM_POWERBROADCASTs mehr, sonst hätte man das ja noch kombinieren können.
So wie es bisher ausschaut klappt das so, wie ich mir das vorgestellt habe nicht, also muss ich an anderer Stelle ein wenig basteln
