2013-08-29 2 views
0

Я использую ниже код для активации команды ПРОМТ:win32gui FindWindow не работает Win7

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

Prompt дей comandi является итальянский слово команды ПРОМТ :) и demo.py это имя питона файл. Он отлично работает с окном 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 Дей comandi - питона demo.py Что это изменится с Win XP на Win7 ??

Thanks

ответ

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

Оказалось, что единственное отличие - это просто одно пространство! я объясню мой сам: это работает для Win XP:

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

это работает на win7:

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

это звучит странно, но это делает.

Смежные вопросы