1

Тема: AHK: как определить изменение источника питания

Здравствуйте,

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

Вопрос: можно ли средствами AHK отслеживать события ACPI, такие как смена источника питания? Если можно, поподробнее - в этой сфере опыта пока нету

Заранее благодарен

2 (изменено: serzh82saratov, 2013-03-27 22:46:07)

Re: AHK: как определить изменение источника питания

Вроде как это должно помочь:
AC/Battery status

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: как определить изменение источника питания

В общем, пока накопал вот что:

1) Если в Power Properties снять галочку с "Always show icon on the taskbar", окно SystemTray_Main при отключении питания получает сообщения WM_POWERBROADCAST (0x218) и WM_USER + 220 (0x4DC) причем lParam последнего различаются для включения и выключения. (0 и 1 соответственно). Попробую отследить эти события при помощи OnMessage(). Вероятно, сообщения используются для отображения и скрытия значка батареи в трее

2) Вообще-то, значок батареи в трее Window Spy при клике на ней опознает как окно Power Meter, ahk_class SystemTray_Main и текст этого окна содержит всю необходимую информацию. Беда в том, что при помощи WinGetText выдрать оттуда ничего не удается. Может кто знает, как получить текст контролов трея Windows? Имитировать нажатия мыши по батарее в моем случае нельзя.

4 (изменено: serzh82saratov, 2013-03-27 22:58:05)

Re: AHK: как определить изменение источника питания

del

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: как определить изменение источника питания

serzh82saratov пишет:

Вроде как это должно помочь:
AC/Battery status

serzh82saratov, спасибо, то что надо. А сам искал - не нашел, завтра собирался в MSDN лезть

6

Re: AHK: как определить изменение источника питания

serzh82saratov, спасибо, то что надо. А сам искал - не нашел, завтра собирался в MSDN лезть

Рад был помочь. Только я потом подумал что вам требуется именно получать сообщение при смене статуса, а не просто извлекать сам статус.

Может кто знает, как получить текст контролов трея Windows?

Может ControlGetText поможет.

Попробую отследить эти события при помощи OnMessage()

Так оно же вроде только сообщения посланные окну самого скрипта может отслеживать?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: как определить изменение источника питания

serzh82saratov пишет:

Так оно же вроде только сообщения посланные окну самого скрипта может отслеживать?

Я с этим еще не сталкивался, но вроде нет. Вот отрывок из справки:

The Function's Parameters
A function assigned to monitor one or more messages can accept up to four parameters:

MyMessageMonitor(wParam, lParam, msg, hwnd)
{
    ... body of function...
}

Although the names you give the parameters do not matter, the following information is sequentially assigned to them:

Parameter #1: The message's WPARAM value, which is an integer between 0 and 4294967295.
Parameter #2: The message's LPARAM value, which is an integer between 0 and 4294967295.
Parameter #3: The message number, which is useful in cases where a function monitors more than one message.
Parameter #4: The HWND (unique ID) of the window or control to which the message was sent. The HWND can be used with ahk_id.

8 (изменено: creature.ws, 2013-03-28 00:41:36)

Re: AHK: как определить изменение источника питания

В какой части данного отрывка из справки упоминается возможность получать сообщения, адресованные окнам иных процессов?

9

Re: AHK: как определить изменение источника питания

equipment66 пишет:

Беда в том, что при помощи WinGetText выдрать оттуда ничего не удается.

А если так:

DetectHiddenWindows, On
WinGetText, Text, Power Meter ahk_class SystemTray_Main
MsgBox, % Text
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: как определить изменение источника питания

creature.ws пишет:

В какой части данного отрывка из справки упоминается возможность получать сообщения, адресованные окнам иных процессов?

Ну, я прикинул, что раз функции передается hwnd целевого окна, то никто не сказал, что это не может быть hwnd чужого окна. Ибо передавать функции hwnd своего же окна смысла немного. Хотя с того времени уже порылся по интернету и понял, что в целом проблема далеко не так проста.

11

Re: AHK: как определить изменение источника питания

teadrinker пишет:
equipment66 пишет:

Беда в том, что при помощи WinGetText выдрать оттуда ничего не удается.

А если так:

DetectHiddenWindows, On
WinGetText, Text, Power Meter ahk_class SystemTray_Main
MsgBox, % Text

Спасибо, так работает

12

Re: AHK: как определить изменение источника питания

equipment66 пишет:

Ибо передавать функции hwnd своего же окна смысла немного.

У процесса может быть несколько окон.

13 (изменено: becauseim, 2017-11-24 17:19:53)

Re: AHK: как определить изменение источника питания

Подскажите, пожалуйста, как на основе приложенных функций определить, что отключилось питание от ноутбука?
upd.: нашел.