Python: 处理 mspaint.exe Window 返回 0
Python: Handle mspaint.exe Window returning 0
我正在尝试处理 python 3.5 中的 mspaint.exe,但它不起作用。
这是我做的过程和我不能做的:
- 我可以列出所有 windows 列表。
- 我可以得到正确的标题window ("Untitled - Paint")
我不能做什么:
- 无法获取句柄(如果是,则留言 return 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
列表windows函数:
#list all windows list
def enum_window_titles():
def callback(handle, data):
titles.append(win32gui.GetWindowText(handle))
titles = []
win32gui.EnumWindows(callback, None)
return titles
部分流程:
# 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 之后一样工作?
谢谢
window 的名称是 "Untitled - Paint"
,但您将 "paint"
传递给 FindWindow
。如果要调用 FindWindow
,则需要传递正确的 window 名称。像这样称呼它:
win32gui.FindWindow(None, a)
但是,调用 FindWindow
没有意义。当您调用 EnumWindows
时,您的回调会收到 window 句柄。请记住 window 句柄和名称。这样,一旦找到匹配的名称,您就可以使用句柄了。像这样:
import win32gui
def get_window_hwnd(title):
for wnd in enum_windows():
if title.lower() in win32gui.GetWindowText(wnd).lower():
return wnd
return 0
def enum_windows():
def callback(wnd, data):
windows.append(wnd)
windows = []
win32gui.EnumWindows(callback, None)
return windows
hwnd = get_window_hwnd("paint")
print(hwnd)
我正在尝试处理 python 3.5 中的 mspaint.exe,但它不起作用。
这是我做的过程和我不能做的:
- 我可以列出所有 windows 列表。
- 我可以得到正确的标题window ("Untitled - Paint")
我不能做什么:
- 无法获取句柄(如果是,则留言 return 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
列表windows函数:
#list all windows list
def enum_window_titles():
def callback(handle, data):
titles.append(win32gui.GetWindowText(handle))
titles = []
win32gui.EnumWindows(callback, None)
return titles
部分流程:
# 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 之后一样工作?
谢谢
window 的名称是 "Untitled - Paint"
,但您将 "paint"
传递给 FindWindow
。如果要调用 FindWindow
,则需要传递正确的 window 名称。像这样称呼它:
win32gui.FindWindow(None, a)
但是,调用 FindWindow
没有意义。当您调用 EnumWindows
时,您的回调会收到 window 句柄。请记住 window 句柄和名称。这样,一旦找到匹配的名称,您就可以使用句柄了。像这样:
import win32gui
def get_window_hwnd(title):
for wnd in enum_windows():
if title.lower() in win32gui.GetWindowText(wnd).lower():
return wnd
return 0
def enum_windows():
def callback(wnd, data):
windows.append(wnd)
windows = []
win32gui.EnumWindows(callback, None)
return windows
hwnd = get_window_hwnd("paint")
print(hwnd)