You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取全局显示上下文以在任意应用窗口顶层执行BitBlt操作

全局屏幕显示上下文(DC)获取方案

你调用BitBlt直接在屏幕顶层绘制时,不需要传NULL参数,要获取桌面窗口的公开显示上下文即可实现需求,具体操作如下:

  • 调用win32gui.GetDC(0)获取桌面全局DC,参数0对应HWND_DESKTOP的句柄值,代表整个桌面窗口的上下文
  • 拿到DC句柄后可直接调用win32gui.BitBlt执行绘制操作,绘制内容会直接输出到屏幕最顶层
  • 绘制完成后必须调用win32gui.ReleaseDC(0, dc_handle)释放DC资源,否则会导致系统GDI资源泄漏

注意:直接往桌面DC绘制的内容是临时的,只要屏幕有任何刷新动作(比如窗口移动、系统弹窗、壁纸切换等),绘制的内容就会被自动擦除,如果需要持久显示需要自行实现刷新重绘逻辑

示例代码参考:

import win32gui
import win32con

# 获取全局桌面DC
hdc = win32gui.GetDC(0)
# 示例:在屏幕(100,100)位置绘制一个100*100的红色矩形
brush = win32gui.CreateSolidBrush(0x0000FF) # win32颜色格式为BGR顺序,此处对应RGB红色
win32gui.SelectObject(hdc, brush)
win32gui.Rectangle(hdc, 100, 100, 200, 200)
# 释放资源
win32gui.DeleteObject(brush)
win32gui.ReleaseDC(0, hdc)

内容的提问来源于stack exchange,提问作者Nikolai Savulkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 07:24:09