Страница: 1 |
Страница: 1 |
Вопрос: Как влезть в ComboBox чужого приложения.
Добавлено: 24.10.06 23:55
Автор вопроса: 747212
Доброго времени суток!
Вопрос в чем:
Есть на работе программа для ввода информации о клиенте с крайне неудобным интерфейсом. Я сделал на VB свою программу, в которой грубо говоря вписываешь фамилию, имя и т.п. информацию клиента, а после нажатия определенной кнопки - эти данные вставляются в форму чужой программы. Так вот - в обычные поля типа TEdit (чужая программа на Delphi) я без проблемм вставляю информацию (нашел HWND и дальше SendMessage), а есть там несколько полей типа ComboBox - с фиксированными значениями. Например есть список "Регион" - там варианты "Город" и "Село". Возможность ввода своего варианта клавиатурой отсутствует. Но! Я не могу поставить значение село путем посылки сообщения (SendMessage) - стиль там стоит не тот (сообщение ничего не меняет). И вот встал вопрос - как туда пробиться вообще в этот ComboBox и как поменять данные?
Спасибо всем откликнувшимся!
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 25.10.06 01:22
рыть дальше SendMessage...
Номер ответа: 2
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #2
Добавлено: 25.10.06 08:15
>>Hacker
Спасибо, конечно, но нельзя ли поконкретнее...
Интуитивно я и сам догадался, что это через SendMessage, но какими сообщениями это реализовывать - без понятния.
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 25.10.06 11:03
Сообщениями CB_SELECTSTRING или CB_SETCURSEL. Пока не начнёшь читать документацию, ничего не сделаешь.
Номер ответа: 4
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #4
Добавлено: 26.10.06 22:28
Спасибо!
SendMessage(HWND, &H14E, -1, 0) - очень помогло!
Извиняюсь за наглость, но у меня в "чужой программе" есть еще и элемент управления типа TStringGrid с четырьмя колонками - и вот мне туда нужно КАК-ТО записать данные. Никак не могу разобраться как.
Большое спасибо, если поможете!
Номер ответа: 5
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #5
Добавлено: 27.10.06 22:00
- Неужто никто из профи не поможет молодому программисту?!
Номер ответа: 6
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #6
Добавлено: 28.10.06 08:22
Теоретическое решение проблемы:
Смотреть при помощи например Spy++ что за сообщения отсылаются этому контролу при записи в него данных, ну а затем слать их самому через SendMessage
Номер ответа: 7
Автор ответа:
Eugeny
Вопросов: 0
Ответов: 26
Профиль | | #7
Добавлено: 09.11.06 21:08
Combobox состоит из трех окон Edit, List, и собственно Combo.
Для издевательств над всеми ими получим хендлы
Dim cbinf As COMBOBOXINFO
cbinf.cbSize = Len(cbinf)
Call GetComboBoxInfo(Combo1.hwnd, cbinf)
combik_hwnd = cbinf.hwndCombo
spisok_hwnd = cbinf.hwndList
textik_hwnd = cbinf.hwndItem
ну а дальше по желанию, сабклассинг, и т.д.