0

ダイアログの「はい」ボタンのハンドルを取得しようとしているので、メッセージを送信してクリックできます。

ダイアログが表示されたら、ボタンを見つけようとしますが、常に0が返されます。

import win32gui

hwnd = win32gui.FindWindow("#32770", "Programs and Features")
# got back the correct handle to the dialog

win32gui.SetForegroundWindow(hwnd)

btnhdl = win32gui.FindWindowEx(hwnd, 0, "Button", "&Yes")
# returns 0

ボタンはそこにあり、クラスとタイトルは大丈夫のようです。私はこれによってそれを確認しました:

def printClasses(childHwnd, lparam):
    if win32gui.GetWindowText(childHwnd) == "&Yes":
        print win32gui.GetClassName(childHwnd), win32gui.GetWindowText(childHwnd)
    return 1

win32gui.EnumChildWindows(hwnd, printClasses, None)
# output: Button &Yes

すべてがうまくいくように見えますが、なぜそれがハンドルを返さないのFindWindowExですか?

ありがとう

4

1 に答える 1

2

[From the comments in the OP] Maybe the button is a child of a child, ie a grandchild? IIRC EnumChildWindow enumerates recursively while FindWindowEx does not.

于 2012-05-10T20:17:22.097 に答える