win32gui findwindow 不工作 win7

Posted

技术标签:

【中文标题】win32gui findwindow 不工作 win7【英文标题】:win32gui findwindow doesn't work win7 【发布时间】:2013-08-29 16:13:14 【问题描述】:

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

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

Prompt dei comandi 是命令 promt 的意大利语单词 :),demo.py 是 python 文件的名称。 它与window 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

在该列表中,我可以看到:Prompt dei comandi - python demo.py win xp到win7有什么变化??

谢谢

【问题讨论】:

【参考方案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")

希望对你有帮助。

【讨论】:

【参考方案2】:

原来,唯一的不同只是在一个空间上! 我会解释我自己: 这适用于win xp:

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

这适用于win7:

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

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

【讨论】:

以上是关于win32gui findwindow 不工作 win7的主要内容,如果未能解决你的问题,请参考以下文章

python--获得特定程序的屏幕截图并保存为文件

python win32api win32gui win32con 窗口句柄 发送消息 常用方法 键盘输入

python win32gui 查找子窗口

python控制窗口显示隐藏

Python 非活动屏幕截图

无法加载 pywin32 库 win32gui