как запускать элементы только при подключенном ноутбуке

как запускать элементы только при подключенном ноутбуке

Я использую Windows 8.1 (но это не должно иметь значения) на ноутбуке и хотел бы узнать, можно ли изменить процесс запуска таким образом, чтобы:

Некоторые программы запускаются ТОЛЬКО при подключении к электросети (питанию), а другие программы запускаются ТОЛЬКО при ОТСУТСТВИИ подключения к электросети.

Возможно ли это? И если да, то как?

решение1

Я не знаю, есть ли какие-либо сторонние утилиты для этого, но в Windows есть встроенные механизмы для мониторинга состояния батареи. Хорошая новость в том, что она делает доступной для вас массу информации о вашей батарее. Плохая новость в том, что она совсем не упрощает ее использование.

Отличный способ добиться желаемого — использовать скрипт для запуска приложений. Я набросал пример скрипта ниже. Просто скопируйте/вставьте его в Блокнот, настройте его так, как вам нужно, а затемсохраните его как файл с расширением .vbs. Как только он заработает, вы можете поместить его в свою группу автозагрузки или куда-то еще.

ПРИМЕЧАНИЕ:Этот скрипт я просто набросал за десять минут. Он должен помочь вам начать, но я не тестировал его тщательно. Значения, возвращаемые BatteryStatus, задокументированы наэта страница MSDN. Возможно, вам придется поэкспериментировать, чтобы увидеть, какое значение будет сообщено при тех или иных обстоятельствах.

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

решение2

Спасибо Уэсу Саиду за то, что он указал мне правильное направление. Вот конечный результат. Однако учтите, что программы могут работать не так, как на вашем компьютере, поскольку я использовал их в качестве примера, и любой добавленный синтаксис может не иметь ничего общего с программами, которые вы знаете...

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

Так что теперь 'thunderbird' и 'someprogram' запускаются при запуске ТОЛЬКО когда ноутбук отключен от кабеля питания. Чтобы дать вам больше информации:

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

даст вам больше информации... в результате (при отключении от сети):

Battery: ACPI\PNP0C0A\1_0
On AC Power: False
Battery is Discharging: True
Battery is Charging: False
Remaining capacity: 41769

А если мы затем подключим компьютер и попробуем снова выполнить скрипт, то получим информацию, подобную этой:

Battery: ACPI\PNP0C0A\1_0
On AC Power: True
Battery is Discharging: False
Battery is Charging: True
Remaining capacity: 42273

Поэтому в моем окончательном сценарии я проверял только то, включено ли питание переменного тока, независимо от того, заряжалась или разряжалась батарея. (источник:Привет, Скриптер! Блог - Как узнать, разряжается ли аккумулятор ноутбука?

Связанный контент