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

0

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

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

Я знаю, что это довольно широкий вопрос, но любая идея, которая может повлиять на такое поведение? Я считаю, что мой код правильный, поэтому я ищу причину в другом месте, например, разрешения, разные версии user32,...??

Следующий будет отображать текст в combobox, строка выбора будет успешной, но после нажатия кнопки сохранения используется исходное значение.

 User32.SendMessage(combobox, User32Constants.CB_ADDSTRING, 0, DownloadAsFileName);
 var selected = User32.SendMessage(pointerToParent, User32Constants.CB_SELECTSTRING, -1, DownloadAsFileName);

Я пробовал разные методы получения целевого пути в combobox, но те же результаты. Работает только на моем ящике, я вижу, что sendmessages возвращает ожидаемые результаты, но вместо этого используется значение по умолчанию.

User32.SendMessage(editPartOfCB, User32Constants.WM_SETTEXT, DownloadAsFileName.Length, DownloadAsFileName);
User32.SendMessage(combobox, User32Constants.CB_SETCURSEL, 0, IntPtr.Zero);

Любая помощь ценится!

Теги:
sendmessage
user32

2 ответа

1
Лучший ответ

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню