c # — CB_SELECTSTRING игнорируется на некоторых машинах

Я использую библиотеку 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);

Любая помощь приветствуется!

0

Решение

В зависимости от метода, который вы используете для изменения имени файла, отправьте соответствующее уведомление WM_COMMAND родителю ComboBox (CBN_SELCHANGE или CBN_EDITCHANGE)

1

Другие решения

Подсказка: приложение, на которое вы ориентируетесь, является приложением с более высокими привилегиями, а Windows блокирует ваши сообщения.

Попробуйте запустить процесс от имени администратора и посмотрите, повлияет ли это на результаты.

1

По вопросам рекламы [email protected]