como iniciar itens apenas quando o laptop estiver conectado

0

Estou executando o Windows 8.1 (mas isso não deveria importar) em um laptop e queria saber se seria possível modificar o processo de inicialização de uma forma que:

Certos programas SÓ começam quando você está conectado (energia) e outros programas SOMENTE começam quando você NÃO está conectado.

Isso é possível ... e se sim, como?

    
por Malachi 08.07.2014 / 00:38

2 respostas

0

Eu não sei se existem utilitários de terceiros para fazer isso, mas o Windows tem mecanismos internos para monitorar o status da bateria. A boa notícia é que ele disponibiliza uma grande quantidade de informações sobre sua bateria. A má notícia é que isso não facilita a sua utilização.

Uma ótima maneira de realizar o que você deseja é usar um script para iniciar seus aplicativos. Eu bati um exemplo de script abaixo. Basta copiar / colar no Bloco de Notas, ajustá-lo como quiser e, em seguida, salvá-lo como um arquivo com extensão .vbs . Uma vez que você o tenha trabalhado, você pode soltá-lo no seu grupo de inicialização ou o que quer que seja.

NOTA: Esse script é algo que eu inventei em dez minutos. Você deve começar, mas eu não testei completamente. Os valores retornados pelo BatteryStatus estão documentados em esta página do MSDN . Você pode ter que experimentar para ver qual valor é relatado sob quais circunstâncias.

Option Explicit

Const execApp1 = "application string goes here"
Const execApp2 = "example:   "c:\full\path\to.exe /arg1 /arg2"
Const execApp3 = "Use double quotes around things with spaces ""like so""."

Dim objShell :Set objShell = CreateObject("WScript.Shell")
Dim objWMI :Set objWMI = GetObject("winmgmts:\.\root\CIMV2")
Dim objBatteries :Set objBatteries = objWMI.ExecQuery("SELECT * FROM Win32_Battery",,48)
Dim objBattery :Set objBattery = Nothing

Dim onACPower :onACPower = False

For Each objBattery in objBatteries
    If objItem.BatteryStatus = 2 Then   '2 is the value I got on a full battery. You may need to experiment with this.
        onACPower = True
    End If
Next

'Here's where you decide if you're on battery or AC and what to run in each case.
If onACPower = True Then objShell.Run execApp1, 0, False
If onACPower = False Then objShell.Run execApp2, 0, False
If onACPower = True Then objShell.Run execApp3, 0, False
    
por 08.07.2014 / 04:01
0

Graças a Wes Sayeed por me apontar na direção certa, aqui está o resultado final. Note, entretanto, que os programas podem não estar sendo executados da mesma forma que no seu computador, já que usei como exemplo e qualquer sintaxe adicionada pode não tem alguma coisa a ver com os programas que você conhece ...

Option Explicit

Const execApp1 = """C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"""
Const execApp2 = """C:\Users\MyProfile\AppData\Roaming\SomeProgram\bin\SomeProgram.exe"" /systemstartup"

Dim strComputer
strComputer = "."

Dim objShell :Set objShell = CreateObject("WScript.Shell")
Dim objWMIService :Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\wmi")
Dim colItems :Set colItems = objWMIService.ExecQuery("Select * From BatteryStatus Where Voltage > 0")
Dim objItem :Set objItem = Nothing

For Each objItem in colItems
'*    Wscript.Echo "On AC Power: " & objItem.PowerOnline
    If objItem.PowerOnline = "True" Then objShell.Run execApp1, 0, False
    If objItem.PowerOnline = "True" Then objShell.Run execApp2, 0, False
Next

Portanto, agora 'thunderbird' e 'someprogram' são executados somente quando o laptop é desconectado do cabo de alimentação. Para dar mais algumas informações:

For Each objItem in colItems
    Wscript.Echo "Battery: " & objItem.InstanceName
    Wscript.Echo "On AC Power: " & objItem.PowerOnline
    Wscript.Echo "Battery is Discharging: " & objItem.Discharging
    Wscript.Echo "Battery is Charging: " & objItem.Charging
    Wscript.Echo "Remaining capacity: " & objItem.RemainingCapacity
Next

fornecerá mais informações ... resultando em (quando desconectado):

Battery: ACPI\PNP0C0A_0
On AC Power: False
Battery is Discharging: True
Battery is Charging: False
Remaining capacity: 41769

E se, em seguida, conectarmos o computador e tentarmos o script novamente, receberemos informações semelhantes a esta:

Battery: ACPI\PNP0C0A_0
On AC Power: True
Battery is Discharging: False
Battery is Charging: True
Remaining capacity: 42273

Então, no meu roteiro final, eu só checava se a energia AC estava ligada, não importando se a bateria estava carregando ou descarregando. (fonte: link )

    
por 09.07.2014 / 16:32