Tentando alternar planos de energia no Windows 7 automaticamente

2

Estou tentando escrever um pequeno programa no VB.NET que detecta quando meu laptop foi desconectado da rede elétrica e muda o plano de energia para economia de energia e vice-versa quando ele é conectado à rede elétrica.

Eu tentei fazer isso através do registro com este snippet de código

Select Case power_status.ACLineStatus
            Case 0
                Dim CurrentPowerPlan As String = My.Computer.Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control").OpenSubKey("Power").OpenSubKey("User").OpenSubKey("PowerSchemes").GetValue("ActivePowerScheme")
                If CurrentPowerPlan <> "a1841308-3541-4fab-bc81-f71556f20b4a" Then
                    Label1.Text = "Running On Battery"
                    ChangePowerPlan("a1841308-3541-4fab-bc81-f71556f20b4a") 'Power Saver
                End If
            Case 1
                Dim CurrentPowerPlan As String = My.Computer.Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control").OpenSubKey("Power").OpenSubKey("User").OpenSubKey("PowerSchemes").GetValue("ActivePowerScheme")
                If CurrentPowerPlan <> "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c" Then
                    Label1.Text = "Connected To NEPA"
                    ChangePowerPlan("8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c") 'High Performance
                End If
                'Case 255
                'MessageBox.Show("Unknown")
        End Select

Mas isso gera um erro

Requested registry access is not allowed.

Eu também ouvi falar de uma função Win32 '' "PowerSetActiveScheme" ', mas eu não sei como mapeá-lo para VB.NET.

    
por Bezaleel 26.10.2011 / 13:39

1 resposta

4

Você pode tentar executar um comando shell a partir de seu aplicativo VB.NET para executar um comando semelhante ao seguinte:

powercfg -SETACTIVE {guidScheme2}

De acordo com as informações neste artigo sobre Esquemas de energia

    
por 26.10.2011 / 13:53