Я использую библиотеку user32 для автоматизации некоторых кликов в браузере Windows, IE — в частности, «Сохранить как». Мое решение отлично работает на моей коробке, но на других компьютерах не очень.
Проблема в том, что когда я задаю путь загрузки в выпадающем списке, имя файла, которое я передаю, просто игнорируется, и используется исходное значение. Другие сообщения принимаются отлично в обеих средах, это включает нажатие кнопок, получение дескрипторов к окнам, итерации окон, вы называете это.
Я знаю, это довольно широкий вопрос, но есть идеи, что может повлиять на такое поведение? Я считаю, что мой код правильный, поэтому я ищу причину в другом месте, например, разрешения, разные версии user32, … ??
Далее будет отображаться текст в выпадающем списке, выбор строки будет успешным, но после нажатия кнопки сохранения будет использовано исходное значение.
User32.SendMessage(combobox, User32Constants.CB_ADDSTRING, 0, DownloadAsFileName);
var selected = User32.SendMessage(pointerToParent, User32Constants.CB_SELECTSTRING, -1, DownloadAsFileName);
Я пробовал разные методы получения пути назначения в комбинированный список, но результаты были те же. Работает только на моем ящике, я вижу, что sendmessages возвращают ожидаемые результаты, но вместо этого используется значение по умолчанию.
User32.SendMessage(editPartOfCB, User32Constants.WM_SETTEXT, DownloadAsFileName.Length, DownloadAsFileName);
User32.SendMessage(combobox, User32Constants.CB_SETCURSEL, 0, IntPtr.Zero);
Любая помощь приветствуется!
В зависимости от метода, который вы используете для изменения имени файла, отправьте соответствующее уведомление WM_COMMAND родителю ComboBox (CBN_SELCHANGE или CBN_EDITCHANGE)
Подсказка: приложение, на которое вы ориентируетесь, является приложением с более высокими привилегиями, а Windows блокирует ваши сообщения.
Попробуйте запустить процесс от имени администратора и посмотрите, повлияет ли это на результаты.