4

アプリケーションを起動するための簡単なスクリプトを作成しました。「SendKeys」モジュールを使用して、このアプリケーションにキーストロークを送信しようとしています。ボタンは 1 つですが、新しいウィンドウがフォーカスされていないため、"Snapshot"Python でボタンをクリックすること はできません。"Snapshot"そのため、Win32gui モジュールwin32gui.FindWindowwin32gui.SetForegroundWindow機能を使用する予定です。しかし、それは私に与えますerror- invalid handle。私のアプリ名は「DMCap」です

Python のコード スニペットは次のとおりです。

handle = win32gui.FindWindow(0, "DMCap")  //paassing 0 as I dont know classname 
win32gui.SetForegroundWindow(handle)  //put the window in foreground

誰でも私を助けることができますか?この Python コードは正しいですか? このようにハンドルを直接送信できますか?

4

1 に答える 1

4

「DMCap」というタイトルのウィンドウが本当にある場合、コードはそのままで問題なく動作するはずです。ハンドルとタイトルのリストを取得するには、次のコードを実行します。

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()
for i in appwindows:
    print i

これにより、ハンドルとタイトルのペアを含むタプルのリストが生成されます。

于 2013-05-27T14:06:04.213 に答える