Python:控制柄mspaint.exe窗口返回0

2024-05-15 22:09:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设法处理mspaint.exe但它不起作用。在

这就是我所做的和我不能做的事情:

  • 我可以列出所有窗口列表。在
  • 我可以找到正确的标题窗口(“无标题-绘画”)

我不能做的是:

  • 无法获取句柄(如果是,则postmessage返回0)

这是我现在的密码

获取句柄函数:

 # trying to get handle with title parameter
 def get_window_hwnd(title):
    hwnd = False
    list = enum_window_titles();
    for a in list:
        if title.lower() in a.lower() :
            print(a.lower()) # untitled - paint
            hwnd = win32gui.FindWindow(None, title)
            print(hwnd) # return 0
            return hwnd
    return hwnd

列表窗口功能:

^{pr2}$

过程的一部分:

# core
hwnd = -1
hwnd = get_window_hwnd("paint") # get handle window
print(hwnd) # 0

if(hwnd != -1 or hwnd != False): # enter here
    a = win32api.SendMessage(hwnd, win32con.WM_MOUSEMOVE, 0, win32api.MAKELONG(200, 200));
    b = win32api.PostMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON,0);
    c = win32api.SendMessage(hwnd, win32con.WM_MOUSEMOVE, 0, win32api.MAKELONG(400, 400));
    d = win32api.PostMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON,0);
    print(a);  #
    print(b);
    print(c);
    print(d);

完整打印结果:

untitled - paint
0
0
# here is the Post Message and Send Message
0
None
0
None

你知道为什么我不能处理我的mspaint吗?在

有什么办法知道句柄是否像PostMessage和SendMessage那样工作?在

谢谢你


Tags: nonegetreturntitlewindow句柄lowerprint
1条回答
网友
1楼 · 发布于 2024-05-15 22:09:37

窗口的名称是"Untitled - Paint",但您将"paint"传递给FindWindow。如果要调用FindWindow,则需要传递正确的窗口名。这样称呼:

win32gui.FindWindow(None, a)

但是,调用FindWindow是没有意义的。当您调用EnumWindows时,回调将接收窗口句柄。记住窗口句柄和名称。这样,一旦找到匹配的名称,就可以使用句柄了。像这样:

^{pr2}$

相关问题 更多 >