Страница: 1 |
Вопрос: Как влезть в ComboBox чужого приложения. | Добавлено: 24.10.06 23:55 |
Автор вопроса: ![]() |
Доброго времени суток!
Вопрос в чем: Есть на работе программа для ввода информации о клиенте с крайне неудобным интерфейсом. Я сделал на VB свою программу, в которой грубо говоря вписываешь фамилию, имя и т.п. информацию клиента, а после нажатия определенной кнопки - эти данные вставляются в форму чужой программы. Так вот - в обычные поля типа TEdit (чужая программа на Delphi) я без проблемм вставляю информацию (нашел HWND и дальше SendMessage), а есть там несколько полей типа ComboBox - с фиксированными значениями. Например есть список "Регион" - там варианты "Город" и "Село". Возможность ввода своего варианта клавиатурой отсутствует. Но! Я не могу поставить значение село путем посылки сообщения (SendMessage) - стиль там стоит не тот (сообщение ничего не меняет). И вот встал вопрос - как туда пробиться вообще в этот ComboBox и как поменять данные? Спасибо всем откликнувшимся! |
Ответы | Всего ответов: 7 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #1 | Добавлено: 25.10.06 01:22 |
рыть дальше SendMessage... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 4 Ответов: 15 |
Профиль | Цитата | #2 | Добавлено: 25.10.06 08:15 |
>>Hacker
Спасибо, конечно, но нельзя ли поконкретнее... Интуитивно я и сам догадался, что это через SendMessage, но какими сообщениями это реализовывать - без понятния. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #3 | Добавлено: 25.10.06 11:03 |
Сообщениями CB_SELECTSTRING или CB_SETCURSEL. Пока не начнёшь читать документацию, ничего не сделаешь. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 4 Ответов: 15 |
Профиль | Цитата | #4 | Добавлено: 26.10.06 22:28 |
Спасибо!
SendMessage(HWND, &H14E, -1, 0) - очень помогло! Извиняюсь за наглость, но у меня в "чужой программе" есть еще и элемент управления типа TStringGrid с четырьмя колонками - и вот мне туда нужно КАК-ТО записать данные. Никак не могу разобраться как. Большое спасибо, если поможете! |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 4 Ответов: 15 |
Профиль | Цитата | #5 | Добавлено: 27.10.06 22:00 |
- Неужто никто из профи не поможет молодому программисту?! |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 249094859 Вопросов: 0 Ответов: 310 |
Профиль | Цитата | #6 | Добавлено: 28.10.06 08:22 |
Теоретическое решение проблемы:
Смотреть при помощи например Spy++ что за сообщения отсылаются этому контролу при записи в него данных, ну а затем слать их самому через SendMessage |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 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 ну а дальше по желанию, сабклассинг, и т.д. |
Страница: 1 |
|