This is my first post on SO, however a lot of Googling has led me here over the years.
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:
c = wmi.WMI ()
watcher = c.watch_for (
notification_type="Creation",
wmi_class="Win32_Process",
delay_secs=2,
Name='calc.exe'
)
calc_created = watcher ()
And documentation for the WMI event is found here:
However, only the second example on the timgolden website works, which is for detecting if the calculator gets opened and closed.
Please guide me on adapting the code to detect brightness changes on my laptop! Best regards :--) BTW I am on Python 3 and Windows 10
Here is the code I run
import wmi
c = wmi.WMI()
power_watcher = c.Win32_WmiMonitorBrightnessEvent.watch_for()
print(power_watcher)
and the error
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 "", 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
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
解决方案
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)