如何在Windows 10上使用Python和WMI检测亮度变化? [英] How can I detect brightness changes using Python and WMI on Windows 10?

查看:663
本文介绍了如何在Windows 10上使用Python和WMI检测亮度变化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我关于SO的第一篇文章,但是多年来,很多Google搜索使我来到了这里.

This is my first post on SO, however a lot of Googling has led me here over the years.

我正在尝试使用一组称为Windows Management Instrumentation(WMI)的工具检测笔记本电脑上的亮度变化,特别是一个名为WmiMonitorBrightnessEvent的事件类和一个watch_for侦听器.后者的用法描述如下:

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:

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事件的文档,请参见此处:

And documentation for the WMI event is found here:

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

但是,只有timgolden网站上的第二个示例有效,该示例用于检测计算器是否打开和关闭.

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

以下是一个可能有用的参考: https://www.autohotkey.com/boards/viewtopic. php?f = 5& t = 58914

Here is one reference that might be useful: https://www.autohotkey.com/boards/viewtopic.php?f=5&t=58914

请指导我改编代码以检测笔记本电脑上的亮度变化!最好的问候:-)顺便说一句,我在Python 3和Windows 10上运行

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

这是我运行的代码

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

推荐答案

如此解决

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)

这篇关于如何在Windows 10上使用Python和WMI检测亮度变化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆