有没有人知道是否有一个API来获取Windows(XP/Vista/2000/2003)中的当前监视器状态(打开或关闭)?
我的所有搜索似乎都表明没有真正的方法可以做到这一点.
此线程尝试使用GetDevicePowerState,根据Microsoft的文档,它不适用于显示设备.
在Vista中,我可以收听GUID_MONITOR_POWER_ON,但是当手动关闭显示器时,我似乎没有得到事件.
在XP中我可以挂钩WM_SYSCOMMAND SC_MONITORPOWER,查找状态2.这仅适用于系统触发电源的情况.
WMI Win32_DesktopMonitor类似乎也没有帮助.
编辑:这是关于comp.os.ms-windows.programmer.win32 的讨论,表明没有可靠的方法来做到这一点.
其他人还有其他想法吗?
我想在应用程序启动时添加调整屏幕gamma的功能,并在退出时重置它.虽然人们是否应该篡改伽玛是有争议的(个人我发现它毫无用处和有害),但是嘿,有些人希望能够做那种事情.
这只是一个简单的API调用,所以这很容易,对吧?
MSDN说:"伽马斜坡在三个256个WORD元素阵列中指定,每个值必须存储在每个WORD的最高有效位中,以增加DAC的独立性." .在我的理解中,这意味着,word_value = byte_value<<8听起来很奇怪,但这就是我读它的方式.
Doom3源代码包含一个函数,它接受三个char值数组并将它们转换为一个uint16_t值数组,这些值在上半部分和下半部分都具有相同的字节值.换句话说就像word_value = (byte_value<<8)|byte_value.这同样很奇怪,但更糟糕的是它与上面的不一样.
互联网上还有一些代码片段在各种爱好程序员网站上(显然是一个从另一个被盗,因为它们与字母相同),这些代码片段做了一些模糊的数学运算,将线性指数乘以一个值,偏差为128,并且夹到65535.我不太确定这是什么,但对我来说这看起来完全是胡说八道,而且它与上述两者中的任何一个都不一样.
是什么赋予了?必须明确定义 - 不要猜测 - 您提供的数据必须如何?最后,人们会做的是读取原始值并让用户无论如何调整一些滑块(并且可选地使用用户的配置将该blob保存到磁盘),但仍然......为了修改这些值,需要知道他们是什么,期待什么.
有人做过(并经过测试!)之前知道哪一个是对的吗?
如果'windows power management'关闭了显示屏,我如何以编程方式检查Windows 7和XP?(如果我能收到一个活动,那会更好.)
我开发了一个Web应用程序来显示幻灯片,并希望在Windows 10上使用IE的Kiosk模式在我的辅助显示器(通过HDMI连接)上显示它.由于共享服务器上的CPU和其他资源,我想暂停幻灯片放映时显示器已关闭.(因此没有人看到它)
有没有办法从Internet Explorer检测连接的显示器?由于这是一个单独的自助服务终端设置,因此可以使用附加组件等.触发javascript/jquery事件将是理想的.谢谢!
我需要我的 python 脚本来获取 Windows 监视器电源状态。
根据StackOverflow 中的此链接,我可以用来RegisterPowerSettingNotification获取GUID_MONITOR_POWER_ON但我不知道如何实现它。目标是在屏幕关闭时触发事件。
我可以访问该函数,ctypes.windll.user32.RegisterPowerSettingNotification但我需要帮助来调用它并获取消息
RegisterPowerSettingNotification
电源设置 GUID
我运行的是 Windows 10 和 Python 3
更新:
我能够调用并注册窗口来接收消息,但我仍然无法从中获取我需要的信息...我知道 lparam 是指向结构的指针,但我需要从中获取信息,例如 GUID电源设置和数据字段
import win32con
import win32api
import win32gui
import sys
import time
from ctypes import POINTER, windll
from comtypes import GUID
from ctypes.wintypes import HANDLE, DWORD
PBT_POWERSETTINGCHANGE = 0x8013
def log_info(msg):
""" Prints """
print(msg)
f = open("test.log", "a+")
f.write(msg + "\n")
f.close()
def wndproc(hwnd, msg, wparam, lparam):
print('.') …Run Code Online (Sandbox Code Playgroud) winapi ×4
windows ×2
c# ×1
c++ ×1
ctypes ×1
gamma ×1
javascript ×1
jquery ×1
kiosk-mode ×1
python ×1
windows-7 ×1
windows-xp ×1