1.获取Windows自带计算器的窗口句柄以后,打算在上边进行绘制一个矩形,是可以如愿,但是呢,一闪而过。
2.尝试加上while死循环以后,绘制的矩形会一直闪烁,不知道问题在哪里,还有移动问题从窗口那里经过,也会出现重影。
3.自己有pywin32文档,也没查找。。学习pywin32的小白一个。
4.求解,谢谢。
5.源代码:
import win32gui
import win32api
import win32con
import time
def DrawRect():
hwnd = win32gui.GetDesktopWindow()
while True:
hPen = win32gui.CreatePen(win32con.PS_SOLID, 3, win32api.RGB(255, 0, 255)) # 定义框颜色
win32gui.InvalidateRect(hwnd, None, True)
win32gui.UpdateWindow(hwnd)
win32gui.RedrawWindow(hwnd, None, None, win32con.RDW_FRAME | win32con.RDW_INVALIDATE | win32con.RDW_UPDATENOW | win32con.RDW_ALLCHILDREN)
hwndDC = win32gui.GetDC(hwnd) # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
win32gui.SelectObject(hwndDC, hPen)
hbrush = win32gui.GetStockObject(win32con.NULL_BRUSH) # 定义透明画刷,这个很重要!!
prebrush = win32gui.SelectObject(hwndDC, hbrush)
win32gui.Rectangle(hwndDC, 447, 505, 591, 545) # 左上到右下的坐标
win32gui.SelectObject(hwndDC, hPen)
if name == '__main__':
DrawRect()
你的绘图操作会和explorer内的绘图操作打架,也就是说它刷新,你的就没有了,你又画上去,造成一会儿有一会儿没有
除非你注入explorer,在进程内拦截wm_paint,然后绘制,同时抑制它本身的绘图