相关疑难解决方法(0)

有没有办法在Windows中检测监视器状态(打开或关闭)?

有没有人知道是否有一个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 的讨论,表明没有可靠的方法来做到这一点.

其他人还有其他想法吗?

windows winapi

20
推荐指数
4
解决办法
3万
查看次数

正确使用SetDeviceGammaRamp

我想在应用程序启动时添加调整屏幕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保存到磁盘),但仍然......为了修改这些值,需要知道他们是什么,期待什么.

有人做过(并经过测试!)之前知道哪一个是对的吗?

winapi gamma

8
推荐指数
1
解决办法
4042
查看次数

检查Windows电源管理是否关闭了显示屏

如果'windows power management'关闭了显示屏,我如何以编程方式检查Windows 7和XP?(如果我能收到一个活动,那会更好.)

c# c++ winapi windows-xp windows-7

7
推荐指数
1
解决办法
6198
查看次数

检测显示器是否从IE Kiosk模式启动

我开发了一个Web应用程序来显示幻灯片,并希望在Windows 10上使用IE的Kiosk模式在我的辅助显示器(通过HDMI连接)上显示它.由于共享服务器上的CPU和其他资源,我想暂停幻灯片放映时显示器已关闭.(因此没有人看到它)

有没有办法从Internet Explorer检测连接的显示器?由于这是一个单独的自助服务终端设置,因此可以使用附加组件等.触发javascript/jquery事件将是理想的.谢谢!

javascript jquery internet-explorer kiosk-mode

7
推荐指数
1
解决办法
526
查看次数

Python 3:在 Windows 中检测显示器电源状态

我需要我的 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)

python windows winapi ctypes

1
推荐指数
1
解决办法
3233
查看次数