- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Python 制作 Night Light 应用程序。我正在使用 Windows API 来使用 Gamma Ramp 来完成我的任务。我使用 user32.dll 中的 EnumDisplayDevicesW 获取连接到我的 PC 的显示器的信息和数量。
我的桌面上只连接了一台显示器,但输出给出了两台显示器的信息。
这是我的代码。我正在使用 Python 并通过 ctypes 模块访问 WinAPI。
import ctypes
from ctypes import wintypes
class DISPLAY_DEVICEW(ctypes.Structure):
_fields_ = [
('cb', wintypes.DWORD),
('DeviceName', wintypes.WCHAR * 32),
('DeviceString', wintypes.WCHAR * 128),
('StateFlags', wintypes.DWORD),
('DeviceID', wintypes.WCHAR * 128),
('DeviceKey', wintypes.WCHAR * 128)
]
if __name__ == '__main__':
EnumDisplayDevices = ctypes.windll.user32.EnumDisplayDevicesW # get the function address
EnumDisplayDevices.restype = ctypes.c_bool # set return type to BOOL
displays = [] # to store display information
i = 0 # iteration variable for 'iDevNum'
while True:
INFO = DISPLAY_DEVICEW() # struct object
INFO.cb = ctypes.sizeof(INFO) # setting 'cnSize' prior to calling 'EnumDisplayDevicesW'
if not EnumDisplayDevices(None, i, ctypes.byref(INFO), 0):
break # break as soon as False is returned by 'EnumDisplayDevices'
displays.append(INFO) # append information to the list
i += 1
# display information in a sequential form
for x in displays:
print('DeviceName:\t\t', x.DeviceName)
print("DeviceString:\t", x.DeviceString)
print("StateFlags:\t\t", x.StateFlags)
print("DeviceID:\t\t", x.DeviceID)
print("DeviceKey:\t\t", x.DeviceKey)
print(), print()
代码返回的输出如下:-
DeviceName: \\.\DISPLAY1
DeviceString: Intel(R) HD Graphics 510
StateFlags: 5
DeviceID: PCI\VEN_8086&DEV_1902&SUBSYS_D0001458&REV_06
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{C31A4E45-2A30-11EB-953B-92862920CE33}\0000
DeviceName: \\.\DISPLAY2
DeviceString: Intel(R) HD Graphics 510
StateFlags: 0
DeviceID: PCI\VEN_8086&DEV_1902&SUBSYS_D0001458&REV_06
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{C31A4E45-2A30-11EB-953B-92862920CE33}\0001
据我所知,第一个,即 \\.\DISPLAY1
是我的,但为什么需要第二个?
我拥有一台配备标准三星显示器的台式电脑。
任何帮助都会很有帮助。提前致谢!
最佳答案
I have only one monitor connected to my desktop, but the output is giving information of two monitors.
运行此代码并不会告诉您您有两个“监视器”,而是两个“适配器”。
根据 EnumDisplayDevicesW
:
To get information on the display adapter, call EnumDisplayDevices with lpDevice set to NULL. For example, DISPLAY_DEVICE.DeviceString contains the adapter name.
To obtain information on a display monitor, first call EnumDisplayDevices with lpDevice set to NULL. Then call EnumDisplayDevices with lpDevice set to DISPLAY_DEVICE.DeviceName from the first call to EnumDisplayDevices and with iDevNum set to zero. Then DISPLAY_DEVICE.DeviceString is the monitor name.
所以如果需要获取监控信息,需要调用:
EnumDisplayDevices(INFO.DeviceName,j,ctypes.byref(Monitor_INFO),0):
这是一个示例:
import ctypes
from ctypes import wintypes
class DISPLAY_DEVICEW(ctypes.Structure):
_fields_ = [
('cb', wintypes.DWORD),
('DeviceName', wintypes.WCHAR * 32),
('DeviceString', wintypes.WCHAR * 128),
('StateFlags', wintypes.DWORD),
('DeviceID', wintypes.WCHAR * 128),
('DeviceKey', wintypes.WCHAR * 128)
]
if __name__ == '__main__':
EnumDisplayDevices = ctypes.windll.user32.EnumDisplayDevicesW # get the function address
EnumDisplayDevices.restype = ctypes.c_bool # set return type to BOOL
displays = [] # to store display information
i = 0 # iteration variable for 'iDevNum'
j = 0
while True:
INFO = DISPLAY_DEVICEW() # struct object
INFO.cb = ctypes.sizeof(INFO) # setting 'cnSize' prior to calling 'EnumDisplayDevicesW'
Monitor_INFO = DISPLAY_DEVICEW()
Monitor_INFO.cb = ctypes.sizeof(Monitor_INFO)
if not EnumDisplayDevices(None, i, ctypes.byref(INFO), 0):
break # break as soon as False is returned by 'EnumDisplayDevices'
#j = 0
while EnumDisplayDevices(INFO.DeviceName,j,ctypes.byref(Monitor_INFO),0):
print("monitor name:\t\t",Monitor_INFO.DeviceName,'\n\n')
j+=1
displays.append(INFO) # append information to the list
i += 1
# display information in a sequential form
for x in displays:
print('DeviceName:\t\t', x.DeviceName)
print("DeviceString:\t", x.DeviceString)
print("StateFlags:\t\t", x.StateFlags)
print("DeviceID:\t\t", x.DeviceID)
print("DeviceKey:\t\t", x.DeviceKey)
print(), print()
关于python - EnumDisplayDevices 提供两个显示器,即使我有一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65624377/
我的问题很简单,我相信我只是遗漏了一些小东西,但我不知道它是什么。 我知道如何使用 GraphicsEnvironment、GraphicsConfiguration 和 GraphicsDevice
我目前正在使用一台机器,它的两侧有 2 个显示器。它有一个类似操纵杆的 4 个按钮,用于控制中央机械手的运动。它们都显示相同的屏幕,即显示 1 在第二个屏幕上重复显示。它们都是触摸屏。我希望它们根据用
虽然容器应该具有连接到显示器所需的权限,但我每次都收到此错误: docker exec -it my_container /# rqt QStandardPaths: XDG_RUNTIME_DIR
有没有办法通过 OS X 中的终端获取有关连接的显示器和显示器及其分辨率的信息? 我有一些安装在多台显示器上运行,有时如果没有连接显示器,GFLW 窗口似乎无法打开 - 我想检查显示器是否正确连接,并
本质上,我要完成的是让一个矩形显示器侧向(垂直方向),Android 显示屏处于纵向位置。由于显示器的限制,在显示器本身上旋转显示是不可行的。首先我设置禁用自动旋转,然后将其设置为纵向模式。 adb
我一直在思考一个我想开发的项目的可行性,我不知道是否可行。我想要的是一台标准的 Linux 计算机,当另一台机器通过 USB 插入它时,让它像 USB 显示器一样工作; IE。如果我用标准 USB 线
在 Windows 中,我们有关于我们的 Monitros 的信息——一些唯一的名称和 ID。例如 宏碁 xxx 三星xxx 我对如何在 C# 中获取信息有疑问,因为我知道我们可以从 WMI 获取序列
如何检测笔记本电脑/上网本中插入的显示器并在检测到后启用克隆显示 View ? 非常感谢 最佳答案 您可以使用 EnumDisplaySettingsEx() 这是类似的问题:How do I ena
我有一个使用 AWT 的 Java 程序,我想在 headless 系统上运行它。该程序的显示除了显示统计信息外什么都不做。当程序完成时,它退出。显示屏上没有用户交互。该程序创建了一个我在构建系统中使
我发现了很多关于 Retina Display 的问题,但没有一个答案在服务器端。 我想根据屏幕提供不同的图像,例如(在 PHP 中): if( $is_retina) $thumbnail
我在一个容器中显示多个 DIV,我希望它们在右侧没有更多空间时换行。它在 IOS 上运行良好,但我无法使其在 Android 上运行... -webkit-flex-wrap: wrap; -moz-
我在本地计算机上运行 matlab,并从 Java 调用以下函数(在 tomcat Web 服务器中运行): function df = getFig(file) f = openfig(fi
我想开发一个使用两个屏幕来显示信息的 Android 应用程序。例如:一个屏幕显示应用程序,另一个屏幕显示有关当前应用程序状态的一些信息。 我的问题:android 是否支持两个显示器/屏幕?您将如何
我想编写一个 Python 程序,自动查找和识别连接到我的计算机 (Windows) 的多个显示设备。此外,我还想以编程方式在其中一个设备中启动显示 session (例如幻灯片放映)。知道如何做到这
所以我的 Vista 机器设置为在 10 分钟后关闭显示器。 (注意:机器没有挂起或休眠) 我有一个 .Net 应用程序正在运行,它需要在指定时间“唤醒”系统。作为人类,您只需移动鼠标或按下一个键。我
如何校准 Mac 显示器以匹配 iPhone 的颜色? iPhone 的 Gamma 值是多少? 谢谢。 最佳答案 根据this article ,gamma 为 1.8,这就是 Mac OSX Le
有没有办法用 cocoa 禁用屏幕保护程序和显示器 sleep ? 最佳答案 OSX 10.8 中已弃用 UpdateSystemActivity(OverallAct) 的使用。 现在推荐的方法是通
我正在尝试将 wkhtmltopdf 与 Django、nginx、uwsgi 一起使用 它在使用 manage.py runserver 运行的开发环境中完美运行 但是当与 nginx ans uw
我正在使用 xmonad(具有最小配置,main = xmonad gnomeConfig{ modMask = mod4Mask,terminal = "gnome-terminal"}),我的计算
直接写入帧缓冲区不再有效。无论如何要写入 NDK 中的显示器?我可能会使用 ANativeWindow 但这需要一个现有的表面。有没有更好的办法?或者是在本地创建表面然后使用 ANativeWindo
我是一名优秀的程序员,十分优秀!