Как я могу обнаружить изменения яркости, используя Python и WMI на Windows 10? - PullRequest
1 голос
/ 26 января 2020

Это мой первый пост на SO, однако многие поиски Google привели меня сюда за эти годы.

Я пытаюсь обнаружить изменения яркости на своем ноутбуке, используя набор инструментов под названием Windows Management Instrumentation (WMI), в частности класс событий под названием WmiMonitorBrightnessEvent и слушатель watch_for. Использование последнего описано здесь:

http://timgolden.me.uk/python/wmi/wmi.html#wmi ._ wmi_namespace.watch_for

c = wmi.WMI ()
watcher = c.watch_for (
  notification_type="Creation",
  wmi_class="Win32_Process",
  delay_secs=2,
  Name='calc.exe'
)
calc_created = watcher ()

И документация для события WMI находится здесь:

https://docs.microsoft.com/en-us/windows/win32/wmicoreprov/wmimonitorbrightnessevent

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

Вот одна ссылка, которая может быть полезна: https://www.autohotkey.com/boards/viewtopic.php?f=5&t=58914

Пожалуйста, помогите мне адаптировать код для обнаружения изменений яркости на моем ноутбуке! С наилучшими пожеланиями: -) Кстати, я на Python 3 и Windows 10

Вот код, который я запускаю

import wmi
c = wmi.WMI()
power_watcher = c.Win32_WmiMonitorBrightnessEvent.watch_for()
print(power_watcher)

и ошибка

Traceback (most recent call last):
  File "C:\Users\Arno\AppData\Local\Programs\Python\Python38\lib\site-packages\wmi.py", line 1145, in __getattr__
    return self._cached_classes (attribute)
  File "C:\Users\Arno\AppData\Local\Programs\Python\Python38\lib\site-packages\wmi.py", line 1156, in _cached_classes
    self._classes_map[class_name] = _wmi_class (self, self._namespace.Get (class_name))
  File "<COMObject winmgmts:>", line 2, in Get
  File "C:\Users\Arno\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
    result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'SWbemServicesEx', 'Not found ', None, 0, -2147217406), None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "watcher4.py", line 3, in <module>
    power_watcher = c.Win32_WmiMonitorBrightnessEvent.watch_for()
  File "C:\Users\Arno\AppData\Local\Programs\Python\Python38\lib\site-packages\wmi.py", line 1147, in __getattr__
    return getattr (self._namespace, attribute)
  File "C:\Users\Arno\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: winmgmts:.Win32_WmiMonitorBrightnessEvent

1 Ответ

1 голос
/ 26 января 2020

Решил как таковой

import wmi
c = wmi.WMI(namespace='wmi')
print_job_watcher = c.WmiMonitorBrightnessEvent.watch_for (
  notification_type="Modification",
  delay_secs=1
)

event_happened = print_job_watcher ()
print(event_happened)
...