试图找到一个 ListBox 以便向它发送消息

Trying to find a ListBox in order to send messages to it

我正在尝试使用 pywin32 向(子)window 中的 ListBox 控件发送消息 (LB_SELECTSTRING)。我已经毫无问题地获得了 window 的句柄,而且我还有父 window 的线程 ID 和进程 ID。我的理解是,控件的处理方式与 windows 类似,因为它们有自己的句柄,所以我试图弄清楚如何使用其父句柄找到控件,但似乎没有任何效果。

我的代码如下,它总是引发异常。

try:
    _listbox1_hwnd = win32gui.FindWindowEx(_hwnd, None, "ListBox1", "Preferences")
    if _listbox1_hwnd == 0:
        raise Exception("Listbox1 wasn't found!")
except Exception as e:
    print e
    sys.exit(0)

我也尝试过使用 win32ui FindWindow 方法但没有成功(即这也失败了)

try:
    _listbox1_cwnd = win32ui.FindWindow("ListBox1", "Preferences")
    if _listbox1_cwnd == 0:
        raise Exception("Listbox1 wasn't found!")
except Exception as e:
    print e
    sys.exit(0)

什么是"ListBox1"?这看起来不适合列表框 class 名称。使用 Spy++ 工具检查列表框 class name.

如果您觉得 Python 语言更简单,为什么不使用 pywinauto?我从未见过更简单的自动化工具。而且非常pythonic。