![]() |
Power Button Action per Policy
Dieses verd... Richtlinien-System. Ich habe mal versucht, das Verhalten des Power-Buttons per Policy zu verändern. Mit unterem Code erscheint mein gewähltes verhalten zwar auch in den Energieoptionen der Systemsteuerung, der Schalter am PC reagiert jetzt aber gar nicht mehr.
1. Wie lese ich die GLOBAL_POWER_POLICY korrekt ein? Mit GetCurrentPowerPolicies oder mit ReadGlobalPwrPolicy? 2. Schreibe ich die geänderte GLOBAL_POWER_POLICY zurück? Mit WriteGlobalPwrPolicy oder mit SetActivePwrScheme? 3. Oder gibt es noch eine andere Möglichkeit? PS: Mit CallNtPowerInformation konnte ich zwar lesen, schreiben gelang mir nicht.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var TheGlobalPowerPolicy: GLOBAL_POWER_POLICY; uiID : UINT; pwrScheme : POWER_POLICY; begin If GetCurrentPowerPolicies(@TheGlobalPowerPolicy, @pwrScheme) then ListBox1.Items.Add('GetCurrentPowerPolicies OK') else ListBox1.Items.Add('GetCurrentPowerPolicies FAILED'); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.PowerButtonAc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.PowerButtonDc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.SleepButtonAc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.SleepButtonDc.Action)) ); { If ReadGlobalPwrPolicy(TheGlobalPowerPolicy) then ListBox1.Items.Add('ReadGlobalPwrPolicy OK') else ListBox1.Items.Add('ReadGlobalPwrPolicy FAILED'); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.PowerButtonAc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.PowerButtonDc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.SleepButtonAc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.SleepButtonDc.Action)) ); } // PowerActionShutdown PowerActionHibernate PowerActionNone Case RadioGroup1.ItemIndex Of 0: TheGlobalPowerPolicy.user.PowerButtonAc.Action := PowerActionNone; 1: TheGlobalPowerPolicy.user.PowerButtonAc.Action := PowerActionHibernate; 2: TheGlobalPowerPolicy.user.PowerButtonAc.Action := PowerActionShutdown; end; TheGlobalPowerPolicy.user.PowerButtonAc.Flags := POWER_ACTION_QUERY_ALLOWED or POWER_ACTION_UI_ALLOWED; TheGlobalPowerPolicy.user.PowerButtonAc.EventCode := 0; Case RadioGroup1.ItemIndex Of 0: TheGlobalPowerPolicy.user.PowerButtonDc.Action := PowerActionNone; 1: TheGlobalPowerPolicy.user.PowerButtonDc.Action := PowerActionHibernate; 2: TheGlobalPowerPolicy.user.PowerButtonDc.Action := PowerActionShutdown; end; TheGlobalPowerPolicy.user.PowerButtonDc.Flags := POWER_ACTION_QUERY_ALLOWED or POWER_ACTION_UI_ALLOWED; TheGlobalPowerPolicy.user.PowerButtonDc.EventCode := 0; If WriteGlobalPwrPolicy(TheGlobalPowerPolicy) then ListBox1.Items.Add('WriteGlobalPwrPolicy OK') else ListBox1.Items.Add('WriteGlobalPwrPolicy FAILED'); GetActivePwrScheme(uiID); ReadPwrScheme(uiID, pwrScheme); If SetActivePwrScheme(uiID, @TheGlobalPowerPolicy, @pwrScheme) then ListBox1.Items.Add('SetActivePwrScheme OK') else ListBox1.Items.Add('SetActivePwrScheme FAILED'); If GetCurrentPowerPolicies(@TheGlobalPowerPolicy, @pwrScheme) then ListBox1.Items.Add('GetCurrentPowerPolicies OK') else ListBox1.Items.Add('GetCurrentPowerPolicies FAILED'); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.PowerButtonAc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.PowerButtonDc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.SleepButtonAc.Action)) ); ListBox1.Items.Add( GetEnumName(TypeInfo(POWER_ACTION), Ord(TheGlobalPowerPolicy.user.SleepButtonDc.Action)) ); end; |
Re: Power Button Action per Policy
push
|
Re: Power Button Action per Policy
Hi,
was sagt denn das MSDN? mfG mirage228 |
Re: Power Button Action per Policy
Die hat mir eben bis hierhin weitergeholfen, aber nicht weiter.
PS: Mir ist aufgefallen Das die Einstellung nach einem Neustart übernommen wurde. Es muss aber auch ohne gehen, über die Systemsteuerung wird es ja auch direkt geändert. |
Re: Power Button Action per Policy
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz