2013-10-10 5 views
0

Я использую библиотеку user32, чтобы автоматизировать некоторые из щелчков браузера на Windows, IE - в частности, «сохранить как». Мое решение отлично работает на моем ящике, однако на других компьютерах это не так.CB_SELECTSTRING игнорируется на некоторых машинах

Проблема заключается в том, что я устанавливаю путь загрузки в combobox, имя файла, которое я передаю, просто игнорируется и используется исходное значение. Другие сообщения принимаются только в обеих средах, это включает в себя нажатия кнопок, получение дескрипторов окон, итерацию окон, вы называете это.

Я знаю, что это довольно широкий вопрос, но любая идея, что может повлиять на такое поведение? Я считаю, что мой код правильный, поэтому я ищу причину в другом месте, например, разрешения, разные версии 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); 

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

ответ

1

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

+0

Спасибо, все теперь отсортированы по алфавиту. Я все еще удивляюсь, почему он работал локально, не уведомляя родителя. Если кому-то нужна дополнительная информация о передаче CBN_SELCHANGE - прочитайте это сообщение: http://stackoverflow.com/a/1626264/485790 – Vojtiik

1

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

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

Смежные вопросы