2

I am trying to detect brightness changes on my laptop using a set of tools called Windows Management Instrumentation (WMI), particularly an event class called WmiMonitorBrightnessEvent and a watch_for listener. The use of the latter is described here, and documentation for the WMI event is found here.

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

However, only the second example on the timgolden website works, which is for detecting if the calculator gets opened and closed.

Here is one reference that might be useful.

Please guide me on adapting the code to detect brightness changes on my laptop! BTW I am on Python 3 and Windows 10 and this is the code I run:

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

The error I get is:

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
Neuron
  • 5,141
  • 5
  • 38
  • 59
Arno
  • 41
  • 3
  • You can consider [my answer here](https://stackoverflow.com/questions/60575098/changing-the-screen-brightness-on-windows-via-the-console/60575099#60575099), where I use AHK to control [this useful C# application](http://web.archive.org/web/20160830000255/http://edgylogic.com/dynmedia/292/) – Cadoiz Jan 06 '22 at 11:54

1 Answers1

2

Solved it as such

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)
Arno
  • 41
  • 3