win32gui findwindow没有工作win7

时间:2013-08-29 16:13:15

标签: python-2.7 win32gui

我使用下面的代码激活命令promt:

hwn = win32gui.FindWindow(None, "Prompt dei comandi - python demo.py")
win32gui.SetForegroundWindow(hwn)

Prompt dei comandi是意大利语命令promt :),demo.py是python文件的名称。 它与窗口xp完美配合,但是当我使用win7尝试相同的代码时,它不再起作用了。 我还使用以下代码检查可见窗口的列表:

import win32gui
def window_enum_handler(hwnd, resultList):
    if win32gui.IsWindowVisible(hwnd) and win32gui.GetWindowText(hwnd) != '':
        resultList.append((hwnd, win32gui.GetWindowText(hwnd)))

def get_app_list(handles=[]):
    mlst=[]
    win32gui.EnumWindows(window_enum_handler, handles)
    for handle in handles:
        mlst.append(handle)
    return mlst


appwindows = get_app_list()
return appwindows
for i in appwindows:
   print i

在该列表中,我可以看到:提示dei comandi - python demo.py 它从win xp变为win7 ??

由于

2 个答案:

答案 0 :(得分:1)

有几件事情可能会发生。但我认为这是关于ANSI和UNICODE。尝试使用:

hwn = win32gui.FindWindow(None, u"Prompt dei comandi - python demo.py")

或者也许使用ctypes:

from ctypes import windll

FindWindowW = windll.user32.FindWindowW
FindWindowA = windll.user32.FindWindowA

print FindWindowW(0, u"Prompt dei comandi - python demo.py")
print FindWindowA(0, "Prompt dei comandi - python demo.py")

希望它有所帮助。

答案 1 :(得分:1)

事实证明,唯一的不同就是在一个空间! 我会解释我的自我: 这适用于win xp:

hwn = win32gui.FindWindow(None, "Prompt dei comandi - python demo.py")

这适用于win7:

hwn = win32gui.FindWindow(None, "Prompt dei comandi - python  demo.py")

听起来很疯狂,但确实如此。