Я пытаюсь отправить сообщение (LB_SELECTSTRING) в элемент управления ListBox внутри (дочернего) окна с помощью pywin32. Я получил дескриптор окна без проблем, и у меня также есть идентификатор потока и идентификатор процесса родительского окна. Я понимаю, что элементы управления обрабатываются аналогично окнам, поскольку они имеют свои собственные дескрипторы, поэтому я пытаюсь понять, как найти элемент управления, используя его родительский дескриптор, и ничего не работает.Попытка найти ListBox для отправки сообщений
Код, который у меня есть, ниже, и он всегда вызывает исключение.
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)
Я также попытался с помощью метода FindWindow win32ui без везения (т.е. это также не)
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)
Ваш код ищет окна верхнего уровня. Вам нужно найти окно верхнего уровня и работать через своих детей. Почему бы вам не использовать автоматизацию? –
Я действительно пробовал пройти через дочерние окна, пока еще не повезло. Я не уверен, что такое автоматизация, но причина, по которой я не использую autohotkey, заключается в том, что большинство из того, что я пишу, находится в python (пока я не смогу избавиться от битов в autohotkey, тогда все это будет python) , Я в основном просто обманываю, чтобы увидеть, как много я могу сделать с python, так как я нахожу язык проще. – dserver
Если вы не хотите узнать о автоматизации, это прекрасно. –