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
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.
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