|
vevola
|
 |
« on: January 05, 2012, 06:31:15 PM » |
|
rather than having to manually change the settings, is there a little app that will temporarily disable sleep/hibernation so as to drain all the battery?
|
|
|
|
|
Logged
|
|
|
|
|
4wd
|
 |
« Reply #1 on: January 05, 2012, 10:02:37 PM » |
|
Attached is a small program called PowerMaxTemp, (or PMT for short), that will change the current power scheme to either Always On on XP, (and possibly 2003), or High performance for Vista/7. Normally both these schemes don't allow Standby/Hibernation, however if you've modified them then you'll just have to change them back now  (HINT: If you have changed them, make a copy and call them something else.) Before changing the power scheme it will determine the current power scheme and then write a command into the RunOnce registry keys, [HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce], to change it back to the current scheme on the next (re)boot. If you go into the registry editor after running it and look at the entry above you'll see a key similar to the following: XP: PMT powercfg.exe /setactive "Minimal Power Management" Vista/7: PMT powercfg.exe /setactive 381b4222-f694-41f0-9685-ff5bb260df2e You can delete this key if you don't want it to execute on next boot. The program will run from CLI or Desktop, there's a bit of error checking to see if powercfg.exe ran OK, it doesn't have any output, (unless there's an error), which I might add later. It has been tested on my Win7HPx64 Desktop and XP Pro netbook and amazingly it worked. Have fun. Formatted for AutoIt with the GeSHI Syntax Highlighter [ copy or print] #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=klaptopdaemon.ico #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;PowerMaxTemp #include <Array.au3> #include <Constants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include "_Startup.au3" #include "_OsVersionInfo.au3" Global $schemes, $MaxPowSch, $CurrPowSch, $Progress If _OsVersionTest ($VER_GREATER_EQUAL, 6, 0) Then $Progress = 'Vista/7 ' & StringLower(@CPUArch) & ' or higher' $Progress = $Progress & @CRLF _RevertOldSch() _GetAllScheme() _GetMaxPower() _GetCurrentScheme() _ResetPowerScheme() _SetPowerScheme() _Exit() ; Get me outta here! MsgBox(64, 'PowerMaxTemp', $Progress) ; Get all power schemes using powercfg.exe /list MsgBox(48, 'PowerMaxTemp error', 'Failed to run powercfg.exe /list') $PowSchList = '' $error = '' $Progress = $Progress & 'Power schemes not read' & ' - Code: ' & @error & @CRLF & 'Exiting...' _Exit() ; Get the Maximum power scheme: ; XP: Always On ; Vista/7: High performance For $i = 1 To $schemes[0] If _OsVersionTest ($VER_GREATER_EQUAL, 6, 0) Then $Progress = $Progress & 'New scheme: ' & $MaxPowSch & @CRLF ; Get the current power scheme, in Vista/7 it's marked in the list with '*'. ; In XP we have to issue a powercfg /query command ; Vista/7 uses the GUID, XP uses the plain text name - Standards, who needs them? Local $i, $output, $error $Progress = $Progress & 'Current scheme: ' If _OsVersionTest ($VER_GREATER_EQUAL, 6, 0) Then For $i = 1 To $schemes[0] MsgBox(48, 'PowerMaxTemp error', 'Failed to run powercfg.exe /query') $output = '' $error = '' $Progress = $Progress & 'Not read' & ' - Code: ' & @error & @CRLF ; Set RunOnce to restore the current power scheme on reboot If _OsVersionTest ($VER_GREATER_EQUAL, 6, 0) Then If _StartupRegistry_Install ("PMT", "powercfg.exe /setactive " & $CurrPowSch, 1, 1) = 0 Then $Progress = $Progress & 'Install RunOnce: Fail' & @CRLF $Progress = $Progress & 'Install RunOnce: Done' & @CRLF If _StartupRegistry_Install ("PMT", 'powercfg.exe /setactive "' & $CurrPowSch & '"', 1, 1) = 0 Then $Progress = $Progress & 'Install RunOnce: Fail' & @CRLF $Progress = $Progress & 'Install RunOnce: Done' & @CRLF ; Change the system to use the maximum power scheme, for XP we put quotes around it If _OsVersionTest ($VER_GREATER_EQUAL, 6, 0) Then Local $foo = Run(@comspec & ' /c powercfg.exe /setactive "' & $MaxPowSch & '"', '.', @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) MsgBox(48, 'PowerMaxTemp error', 'Failed to run powercfg.exe /setactive') $cps = '' $error = '' $Progress = $Progress & 'Set scheme: Fail' & ' - Code: ' & @error & @CRLF ; When PMT is run, RunOnce is checked for key 'pmt'. ; If it exists: the old scheme is read, the command executed, and the 'pmt' key removed. ; If it doesn't exist the program carries on with setting High performance/Always On scheme. Local $OldPowSch = RegRead("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce", "pmt") Local $OldPowSch = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce", "pmt") $Progress = $Progress & 'Revert: No' & @CRLF $Progress = $Progress & 'Revert: Yes' & @CRLF MsgBox(48, 'PowerMaxTemp error', 'Failed to run ' & $OldPowSch) $cps = '' $error = '' $Progress = $Progress & 'Scheme reset: Fail' & ' - Code: ' & @error & @CRLF If _StartupRegistry_Uninstall ("PMT", $OldPowSch, 1, 1) = 0 Then $Progress = $Progress & 'Remove RunOnce: Fail' & @CRLF $Progress = $Progress & 'Remove RunOnce: Done' & @CRLF _Exit()
Updated: 20120112 - Running it a second time reverts to the original power scheme and clears the RunOnce\pmt key. 20120120 - Outputs results into a window.
|
PMT.zip (368.8 KB - downloaded 48 times.)
|
|
« Last Edit: January 19, 2012, 11:28:50 PM by 4wd »
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|
4wd
|
 |
« Reply #2 on: January 12, 2012, 02:00:52 AM » |
|
Updated, see above - now reverts system on second run.
|
|
|
|
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|
|
vevola
|
 |
« Reply #3 on: January 12, 2012, 05:02:05 AM » |
|
Just curious as to whether I should be "seeing" something (some type of visual feedback), because I don't... 
|
|
|
|
|
Logged
|
|
|
|
|
Ath
|
 |
« Reply #4 on: January 12, 2012, 05:15:43 AM » |
|
Just curious as to whether I should be "seeing" something (some type of visual feedback), because I don't...  it doesn't have any output, (unless there's an error)
Sounds like all is good 
|
|
|
|
|
Logged
|
|
|
|
|
vevola
|
 |
« Reply #5 on: January 12, 2012, 05:50:06 AM » |
|
cool! thanks!!
|
|
|
|
|
Logged
|
|
|
|
|
4wd
|
 |
« Reply #6 on: January 12, 2012, 09:25:35 PM » |
|
No visual output.....I'm a bit of a lazy coder  However, you should get aural feedback. When my machines are switched to High performance/Always On the CPU fan goes into high gear  I'll look at providing some kind of output window at the end.
|
|
|
|
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|
4wd
|
 |
« Reply #7 on: January 19, 2012, 11:32:41 PM » |
|
Updated - now outputs to a window. Run it once:  Run it again:  It will say Fail instead of Done if the powercfg.exe command failed, (and give the error), or the RunOnce registry entry couldn't be (re)set. Unfortunately, it's not easy to determine how an AutoIt executable was launched, (CLI or Windows), so the output will always be to a window even if launched from the CLI. I think that about covers it unless there's a problem - I might look at enabling/disabling Hibernate/Sleep from within the script, (to reduce reliance on powercfg.exe), but don't count on it.
|
|
|
|
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|
skwire
|
 |
« Reply #8 on: January 20, 2012, 12:38:10 PM » |
|
Nice work, 4wd.  vevola, please confirm this works for you and I'll mark and move this thread to Finished Programs.
|
|
|
|
|
Logged
|
|
|
|
|
vevola
|
 |
« Reply #9 on: February 18, 2012, 09:13:39 AM » |
|
Well, it seems to first hibernate, and then on wake up it works...
Also... should I be running it *twice*? I'm not sure I understand your earlier post with the two screenshots...
|
|
|
|
|
Logged
|
|
|
|
|
4wd
|
 |
« Reply #10 on: February 19, 2012, 03:20:47 AM » |
|
Well, it seems to first hibernate, and then on wake up it works... What OS are you using? What is the Power Scheme before you run it, (Control Panel->Power Options) ? What is the Power Scheme after you run it ? Always On or High Performance does not normally allow Sleep, Standby or Hibernate unless the Power Scheme has been changed by the user, (you should make a copy and change that instead). Also... should I be running it *twice*? I'm not sure I understand your earlier post with the two screenshots... Updated: 20120112 - Running it a second time reverts to the original power scheme and clears the RunOnce\pmt key. 20120120 - Outputs results into a window.
That's what the Revert in the output window signifies, Revert=Yes means it's being run for the second time and is setting the Power Scheme to it's original setting prior to the first time PMT was run, it also clears the RunOnce registry entry.
|
|
|
|
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|
vevola
|
 |
« Reply #11 on: March 14, 2012, 03:41:16 PM » |
|
I'm running Win7 64x with "Balanced" power scheme.
To be honest, I tried using the revert, but now hibernation doesn't work at all. When it goes to sleep, I can't wake it up anymore. I see "resuming", and then a black screen and I have to force shut it down. I then see "delete restoration data" or "resume", and I have to "delete" for windows to boot. Which also means that if I forget to save whatever I have open and go away for a while... well... I loose everything.
Any tips?
|
|
|
|
|
Logged
|
|
|
|
|
4wd
|
 |
« Reply #12 on: March 14, 2012, 07:41:11 PM » |
|
OK, I'm going to need some more information: Is your operating system on an SSD or HDD? The output of the powercfg list command, (see below): C:\>powercfg list
Existing Power Schemes (* Active) ----------------------------------- Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced) * Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (High performance) Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver) Power Scheme GUID: e12bd28e-68a8-4f90-b0a5-f76b2b523ca3 (AMD Fusion Utility Recovery Profile)
Can you do a screengrab of PMTs output window when you run it both the first and second time, (like I did here), and either PM them to me or attach to a post. Can you do a screengrab of both the Balanced and High Performance Advanced settings of your Power Options, the default for both of them should look like this:  Also, after running it once what is the value of the PMT key stored under HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce (use regedit.exe) ? What is it after running PMT a second time, (it shouldn't be there) ?
|
|
|
|
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|
vevola
|
 |
« Reply #13 on: March 15, 2012, 04:45:48 AM » |
|
Is your operating system on an SSD or HDD? SSD The output of the powercfg list command Microsoft Windows [Version 6.1.7601] Existing Power Schemes (* Active) ----------------------------------- Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced) Power Scheme GUID: 49ef8fc0-bb7f-488e-b6a0-f1fc77ec649b (Dell) Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (High performance) Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver) * Can you do a screengrab of PMTs output window when you run it both the first and second time
Can you do a screengrab of both the Balanced and High Performance Advanced settings of your Power Options Here's an archive with those screengrabs: http://dl.dropbox.com/u/7...36846/pmt_screenshots.rarAlso, after running it once what is the value of the PMT key stored under HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce (use regedit.exe) ? powercfg.exe /setactive a1841308-3541-4fab-bc81-f71556f20b4a What is it after running PMT a second time, (it shouldn't be there) ? And it's not. Thanks for your help!
|
|
|
|
|
Logged
|
|
|
|
|
4wd
|
 |
« Reply #14 on: March 15, 2012, 07:42:31 AM » |
|
Thanks, it shows that PMT is, (or trying to), switch from Power Saver to High Performance. You didn't include the High Performance Advanced settings screengrab, could you please? I'm running Win7 64x with "Balanced" power scheme. The powercfg output shows you're running in the Power Saver scheme which is a bit more frugal than the Balanced scheme. It also seems to indicate that there might be some form of power software installed by Dell, (only because I see a Dell power scheme there - AMD do the same thing if you run their Fusion software IIRC). Thanks for your help! No problem, it's just got me beat how it can be messing up your hibernation when all it does is swap power schemes, it doesn't change anything in those schemes. It shouldn't even be going into Sleep/Hibernation when in High Performance, as you can see from my grab above, they're both set to Never by default. You can also reset the power schemes to their default values by pressing the Restore Plan Defaults button under each schemes Advanced settings. I've attached a small video of what happens when it runs - you can watch it change the power scheme each time it's run, (.7z because you can't attach .mp4 for some reason). It's the equivalent of you typing in the following commands in a CLI, just as a matter of interest can you effect the same change from the CLI and does it do the same thing Hibernate-wise ? powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (should set to High Performance) powercfg /setactive a1841308-3541-4fab-bc81-f71556f20b4a (should set back to Power Saver) Anyone else care to try it with a Win7 laptop and see what happens?
|
PMT.7z (444.44 KB - downloaded 54 times.)
|
|
|
Logged
|
Four wheel drive: Helping you get stuck faster, harder, further from help...........and it's no different on this forum 
|
|
|
|