【发布时间】:2015-10-23 16:07:27
【问题描述】:
我想使用 Python 3.4 在 Windows 7 中的第二个屏幕上绘制特定图像。我可以使用 pywin32 获取句柄和屏幕尺寸:
import win32api
screens = win32api.EnumDisplayMonitors()
我得到了屏幕的句柄和尺寸:
[(<PyHANDLE:393217>, <PyHANDLE:0>, (0, 0, 1280, 720)),
(<PyHANDLE:7472233>, <PyHANDLE:0>, (1920, 0, 3360, 900))]
我想用我的屏幕尺寸创建一个新缓冲区,将我的数据/图像写入新缓冲区并将其设置为活动屏幕。
我认为我不能使用 pywin32 模块来做到这一点,我想通过 ctypes 访问 Windows API。但是我找不到这里描述的 API 的功能https://msdn.microsoft.com/en-us/library/windows/desktop/ms685032(v=vs.85).aspx
我该怎么做?谢谢!
【问题讨论】:
-
您已链接到适用于控制台窗口文本缓冲区的控制台函数 - 因此没有绘图或图形。通常你会在你创建的窗口中绘图,请说明你想要实现的目标。
-
接受的答案本身与您的屏幕无关。控制台屏幕缓冲区是控制台窗口中 unicode 文本的输出缓冲区,文本背景和前景仅限于 16 种颜色的调色板。如果您正在寻找文字艺术,使用ANSICON 会更简单,它挂钩 Windows API 函数以支持 ANSI 转义序列。
-
我已经意识到我的做法是错误的。我想控制整个第二个屏幕,没有窗口或任何东西。我希望能够在屏幕上绘制 8 位图像,即我想为屏幕上的每个像素指定一个 8 位值。注意:我所指的屏幕是通过 HDMI 连接到计算机的仪器,本质上是第二个屏幕,需要具有适当尺寸的图像。
-
我可以使用DirectPythondirectpython11.sourceforge.net/docs/index.html直接在屏幕上绘图吗?
标签: python winapi ctypes pywin32