bentom

Modify Energy Settings in w7

3 posts in this topic

Hi,

i Have a problem here which I would like to solve with help of AutoIT. Perhaps there's a possibility and someone knows how to start.

Attached is a screenshot (In German but should be the sama in English OS). The Problem is that after attaching a new keyboard or mouse the Setting is defined automatically that it can awake the computer. The result is that the system starts up though it is not wanted. When disabling it it works but changes back after attaching a new keyboard or mouse.

Is it possible to modify this setting. I would then run this script after reboot.

Regards,

B

post-31748-0-52147500-1297335900_thumb.p

Share this post


Link to post
Share on other sites



Hi bentom,

try to find out the registry value that affects this settings.

You could use a tool like ProcessMonitor to lookout for this value.

Then you can set it with RegWrite()

Regards,

Hannes

:)


Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Hi Bentom,

I had a similar problem with wake timers and other settings when I closed a tool that does automatic cyclic rebooting for the system (S3/S4). I wrote this code to adress the settings of power values:

Const $AllowWakeTimerSetting = "1" ; 1 = allow wake timers
Const $RequirePasswordonresumeSetting = "0" ; 0 = do not require password at wakeup



; Get the current power configuration, and dump to file for parsing...
; I use the local run prompt since I discovered that I MUST be running as admin to change this...
send ( "{LWINDOWN}r{LWINUP}" )
WinWaitActive ( "Run", "the name of a program", 20 )
ControlSend ( "Run", "the name of a program", "[CLASSNN:Edit1]", 'cmd /c "powercfg.exe -q>' & @TempDir & '\CurrentPowerDump.txt"' )
sleep ( 300 )
ControlClick ( "Run", "the name of a program", "[CLASSNN:Button2]" )
; Give the file a chance to be written to the hard drive...
Sleep ( 3000 )


; Parse dumped config and locate the power config GUID, and control info (sub/setting GUIDs)...
$EOF = 0
$CurrentConfigDump = FileOpen ( @TempDir & "\CurrentPowerDump.txt", 0 )
While $EOF = 0
    $TempText = FileReadLine ( $CurrentConfigDump )
    $EOF = @error

    ; Get "Power Scheme" info...
    If StringInStr ( $TempText, "Power Scheme GUID:" ) > 0 Then
        $TempText = StringSplit ( StringStripWS ( $TempText, 7 ), " " )
        $PowerScheme = $TempText[4]

    ; Get "Require Password" control info...
    ElseIf ( StringInStr ( $TempText, "Subgroup GUID:" ) > 0 ) And ( StringInStr ( $TempText, "(Settings belonging to no subgroup)" ) > 0 ) Then
        $TempText = StringSplit ( StringStripWS ( $TempText, 7 ), " " )
        $NoSubgroupSubgroup = $TempText[3]
    ElseIf ( StringInStr ( $TempText, "Power Setting GUID:" ) > 0 ) And ( StringInStr ( $TempText, "(Require a password on wakeup)" ) > 0 ) Then
        $TempText = StringSplit ( StringStripWS ( $TempText, 7 ), " " )
        $PasswordonresumeSetting = $TempText[4]

    ; Get "Wake Timer" control info...
    ElseIf ( StringInStr ( $TempText, "Subgroup GUID:" ) > 0 ) And ( StringInStr ( $TempText, "(Sleep)" ) > 0 ) Then
        $TempText = StringSplit ( StringStripWS ( $TempText, 7 ), " " )
        $SleepSubgroup = $TempText[3]
    ElseIf ( StringInStr ( $TempText, "Power Setting GUID:" ) > 0 ) And ( StringInStr ( $TempText, "(Allow wake timers)" ) > 0 ) Then
        $TempText = StringSplit ( StringStripWS ( $TempText, 7 ), " " )
        $WakeTimerSetting = $TempText[4]


    EndIf
WEnd
FileClose ( $CurrentConfigDump )
sleep ( 2000 )
FileDelete ( @TempDir & "\CurrentPowerDump.txt" )


; Set the AC and DC power settings...
_SetPowerConfiguration ( $NoSubgroupSubgroup, $PasswordonresumeSetting, $RequirePasswordonresumeSetting )
_SetPowerConfiguration ( $SleepSubgroup, $WakeTimerSetting, $AllowWakeTimerSetting )


; Get the updated power configuration, and report results to server...
send ( "{LWINDOWN}r{LWINUP}" )
WinWaitActive ( "Run", "the name of a program", 20 )
ControlSend ( "Run", "the name of a program", "[CLASSNN:Edit1]", 'cmd /c "powercfg.exe -q>c:\UpdatedPower.txt"' )
sleep ( 300 )
ControlClick ( "Run", "the name of a program", "[CLASSNN:Button2]" )
sleep ( 3000 )
FileCopy ( "c:\UpdatedPower.txt", "c:\CurrentPowerCFG.txt" )





Func _SetPowerConfiguration ( $ThisPowerSubgroup = "", $ThisPowerSettingControl = "", $ThisPowerSettingState = "" )
    Local $a = 1
    Local $CurrentControl
    For $a = 1 to 2
        If $a = 1 Then
            $CurrentControl = "-SETACVALUEINDEX"
        Else
            $CurrentControl = "-SETDCVALUEINDEX"
        EndIf
        send ( "{LWINDOWN}r{LWINUP}" )
        WinWaitActive ( "Run", "the name of a program", 20 )
        ControlSend ( "Run", "the name of a program", "[CLASSNN:Edit1]", 'cmd /c "powercfg.exe ' & $CurrentControl &' ' & $PowerScheme & ' ' & $ThisPowerSubgroup & ' ' & $ThisPowerSettingControl & ' ' & $ThisPowerSettingState & '"' )
        sleep ( 300 )
        ControlClick ( "Run", "the name of a program", "[CLASSNN:Button2]" )
        Sleep ( 1000 )
    Next
EndFunc

My advice would be to learn the command line powercfg tool (you can do a web search of how it works). What you'd want to do to make my code work in your case is figure out what the name of the keyboard control is in the powercfg tool and change the string I'm using which controls which function I'm modifying.

I know it's not "sexy", but it's really reliable...

Here's the help text from the command line tool:

POWERCFG [/LIST | /QUERY [name] | /CREATE name | /DELETE name |
       /SETACTIVE name | /CHANGE name settings |
       /HIBERNATE {ON|OFF} | /EXPORT name [/FILE filename] |
       /IMPORT name [/FILE filename] | /GLOBALPOWERFLAG {ON|OFF} /OPTION flag |
       /BATTERYALARM {LOW|CRITICAL} [settings] |
       /DEVICEQUERY queryflags | /DEVICEENABLEWAKE devicename |
       /DEVICEDISABLEWAKE devicename | /?]

Description:
    This command line tool enables an administrator to control
    the power settings on a system.

Parameter List:
    /LIST, /L       Lists the names of existing power schemes.
    /QUERY, /Q      Displays the configuration of the specified power scheme.
                    If no name is specified, the configuration of the currently
                    active power scheme is displayed.
    /CREATE, /C     Creates a power scheme with the specified name.  The new
                    scheme is created with the properties of the currently
                    active scheme.
    /DELETE, /D     Deletes the power scheme with the specified name.
    /SETACTIVE, /S  Makes the power scheme with the specified name active.
    /CHANGE, /X     Changes settings of the specified power scheme. Additional
                    switches specify the changes as follows:
                        /monitor-timeout-ac <minutes>
                        /monitor-timeout-dc <minutes>
                        /disk-timeout-ac <minutes>
                        /disk-timeout-dc <minutes>
                        /standby-timeout-ac <minutes>
                        /standby-timeout-dc <minutes>
                        /hibernate-timeout-ac <minutes>
                        /hibernate-timeout-dc <minutes>
                        /processor-throttle-ac <throttle>
                        /processor-throttle-dc <throttle>
                    AC settings are used when the system is on AC power.
                    DC settings are used when the system is on battery power.
                    Setting a timeout to zero will disable the corresponding
                    timeout feature.  Supported throttle settings are NONE
                    CONSTANT, DEGRADE, and ADAPTIVE.
    /EXPORT, /E     Exports the power scheme with the specified name to a
                    file.  If no filename is specified, the default is 
                    SCHEME.POW.  This additional parameter is supported:
                        /FILE <filename>
    /IMPORT, /I     Imports the power scheme from a file under the specified
                    name.  If no filename is specified, the default is
                    SCHEME.POW.  If a scheme with that name already exists, it
                    is replaced with the new one.  This additional parameter
                    is supported:
                        /FILE <filename>
    /HIBERNATE, /H {ON|OFF}  Enables/Disables the hibernate feature.  Hibernate
                    timeout is not supported on all systems.
    /NUMERICAL, /N  Allows the power scheme to be operated upon to be specified
                    using a numerical identifier.  When using this switch, in
                    place of the name of the power scheme on the command line,
                    specify its numerical identifier.  This switch may be used
                    in combination with the /QUERY, /DELETE, /SETACTIVE,
                    /CHANGE, /EXPORT, and /IMPORT commands.
    /GLOBALPOWERFLAG, /G {ON|OFF}  Turns one of the global power flags on/off.
                    Valid flags (to be used after "/OPTION ") are:
                         BATTERYICON:    Turns the battery meter icon in the
                                         system tray on/off.
                         MULTIBATTERY:   Turns on/off multiple battery display
                                         in system Power Meter.
                         RESUMEPASSWORD: Prompt for password on resuming the
                                         system.
                         WAKEONRING:     Turn on/off wake on ring support.
                         VIDEODIM:       Turn on/off support for dimming video
                                         display on battery power.
    /AVAILABLESLEEPSTATES, /A  Reports the sleep states available on the
                    system.  Attempts to report reasons why sleep states are
                    unavailable.
    /BATTERYALARM, /B {LOW|CRITICAL}  Configures the battery alarm.  The
                    following switches can be specified:
                        /activate <on|off>
                            Enables or disables the alarm.
                        /level <percentage (0 - 100)>
                            The alarm will be activated when the power level
                            reaches this percentage.
                        /text <on|off>
                            Turns the text notification on or off.
                        /sound <on|off>
                            Turns the audible notification on or off.
                        /action <none|shutdown|hibernate|standby>
                            Specifies the action to take when this alarm goes
                            off.  Not all actions are always available.
                        /forceaction <on|off>
                            Force stand by or shutdown even if a program stops
                            responding.
                        /program <on|off>
                            Specifies a program to run.  schtasks.exe /change
                           may be used to configure the program.
    /DEVICEQUERY <queryflags> will return a list of devices that meet the
                    criteria specified in <queryflags>.  Possible values
                    for <queryflags> are:
                    wake_from_S1_supported - return all devices that support
                             waking the system from a light sleep state.
                    wake_from_S2_supported - return all devices that support
                             waking the system from a deeper sleep state.
                    wake_from_S3_supported - return all devices that support
                             waking from the deepest sleep state.
                    wake_from_any - return all devices that support waking
                             from any sleep state.
                    S1_supported - list devices supporting light sleep states.
                    S2_supported - list devices supporting deeper sleep.
                    S3_supported - list devices supporting deepest sleep.
                    S4_supported - list devices supporting system hibernation.
                    wake_programmable - list devices that are user-configurable
                             to wake the system from a sleep state.
                    wake_armed - list devices that are currently configured to
                             wake the system from any sleep state.
                    all_devices - return all devices present in the system.
                    all_devices_verbose - return verbose list of devices.
    /DEVICEENABLEWAKE <devicename> enable the device to wake the system from a
                    sleep state. <devicename> is a device retrieved using
                    the '/DEVICEQUERY wake_programmable' parameter.
    /DEVICEDISABLEWAKE <devicename> disable the device from waking the system
                    from a sleep state. <devicename> is a device retrieved
                    using the '/DEVICEQUERY wake_armed' parameter.
    /HELP, /?       Displays information on command-line parameters.

Examples:
    POWERCFG /LIST
    POWERCFG /QUERY scheme
    POWERCFG /QUERY
    POWERCFG /CREATE scheme
    POWERCFG /DELETE scheme
    POWERCFG /SETACTIVE scheme
    POWERCFG /CHANGE scheme /monitor-timeout-dc 15
    POWERCFG /CHANGE scheme /monitor-timeout-dc 0
    POWERCFG /HIBERNATE on
    POWERCFG /EXPORT scheme /file file
    POWERCFG /QUERY number /NUMERICAL
    POWERCFG /GLOBALPOWERFLAG on /OPTION BATTERYICON
    POWERCFG /AVAILABLESLEEPSTATES
    POWERCFG /BATTERYALARM low
    POWERCFG /BATTERYALARM critical /ACTIVATE on /LEVEL 6 /ACTION hibernate
    POWERCFG /DEVICEQUERY wake_armed
    POWERCFG /DEVICEENABLEWAKE "Microsoft USB IntelliMouse Explorer"

Best,

-Tim

Edited by tim292stro

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now