![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить handle элемента управления окна? [D6, WinXP]
йцукенг © (2007-05-10 19:15:00)Как получить handle какого-нибудь элемента управления (button,combobox и др.) любого окна?
Юрий Зотов (2007-08-21 02:50:00) [1]> Bora_ru © (17.08.07 23:45) [21]
В первом же постинге был дан правильный и полный ответ. Вы прислушаться к нему не пожелали. Чему же удивляться?
Bora_ru (2007-08-17 23:45:00) [2]
> Углук © (11.06.07 12:08) [20]
Спасибо. Хоть один нормальный человек попался
Углук (2007-06-11 12:08:00) [3]Хэндл чужого окна можно получить через FindWindow.
Хэндл комбобокса через FindWindowEx. По этим функциям читайте Help-> Win32 SDK Там же - о сообщениях.
Чтобы стянуть текущее значение канала ( то есть свойство Text комбобокса), необходимо дать фокус комбобоксу( после того, как Вы получите его хэндл) путем посылки сообщения WM_SETFOCUS (см. там же),или же, путём эмулирования нажатий клавиши мышки или клавиши Таб (см. SetCursorPos , keybd_event,mouse_event : там же ) .
Далее, посылаете комбобоксу сообщение WM_GETTEXT (см. там же)
Если не сработает, эмулируете нажатие клавиш Контрол+С, или же Контрол+Инсерт (AttachThreadInput ,keybd_event- там же).
Должен осведомить, что задача взятия содержимого элемента управления - каждый раз нетривиальная. Стоит попробовать все варианты и не терять надежды на успех. Удачи!
homm (2007-06-10 23:55:00) [4]> чего еще надо?
см [17] :)
DVM (2007-06-10 23:17:00) [5]
> ingenio (10.06.07 20:43) [16]
в [1] был дан исчерпывающий ответ, чего еще надо?
Anatoly Podgoretsky (2007-06-10 22:12:00) [6]Закусывать надо
ingenio (2007-06-10 20:43:00) [7]Блин пацаны, вы или дебилы, или прикинулись даунами полными! Вам человек ясный вапрос задал, а вы ему начинаете вгонять: типа нахрена тебе эта программа? А что она делает? Да она не катит ваще! Вы мля совсем что ли? Человек по адресу пришёл, думал ему сдесь помогут. Вы так сразу и скажите, что сами нихрена не знаете как этот чёртов handle выдрать для элемента в чужом окне! А то загнули ему ваще не по теме. Вот и обращайся на форум к таким как вы!!!
йцукенг (2007-05-12 16:40:00) [8]Ладно блин! я раскажу зачем мне это было нужно. У меня TV-тюнер и программа DScaler для просмотра телеканалов. Так вот я хочу написать прогу, которая в фоновом режиме будет отслеживать: какой телеканал в течении какого времени был включен и записывать в текстовый файл.
На окне DScaler-а есть выпадающий список (как ComboBox), в котором записаны названия каналов. Так как мне стянуть текущее значение того списка?
{RASkov} (2007-05-12 15:53:00) [9]> [13] йцукенг (12.05.07 15:25)
> Еще раз объясняю: я определяю хендл кальк-ра через FindWindow;
> на его форме есть (если тебя Edit смущает) кнопка "9" (можешь
> проверить).
Ты не понял мой последний вопрос.... или не хочешь отвечать:( Ну как хочешь.... В общем см [1]. Да и нафик, походу твоя прога не нужна никому....
йцукенг (2007-05-12 15:25:00) [10]
> [11] почему калькулятор? Почему его Эдит? Т.е. как алгоритм твоей
> программы определяет, что ей нужно в данный момент времени?
>
Какая разница - ПОЧЕМУ! Просто издеваюсь над калькулятором.
Еще раз объясняю: я определяю хендл кальк-ра через FindWindow; на его форме есть (если тебя Edit смущает) кнопка "9" (можешь проверить). Так как мне получить к ней доступ (изменить размеры, установить caption и т.п.)?
Cobalt (2007-05-12 04:03:00) [11]2 йцукенг (11.05.07 13:01) [9]
Значит так: запускаешь WinSight32 и смотришь на нужную тебе прогу - как там у неё лежат окна друг на друге, и, соответственно, пляшешь от этого.
{RASkov} (2007-05-11 23:34:00) [12]> [9] йцукенг (11.05.07 13:01)
> ЛЮДИ, я упрощу вам задачу:
Прям выглядит так: Не хочешь проблем не заходи на www.delphimaster.ru
Ты бы подробнее свою проблему.... Например из [9]: почему калькулятор? Почему его Эдит? Т.е. как алгоритм твоей программы определяет, что ей нужно в данный момент времени?
homm (2007-05-11 21:50:00) [13]> ЛЮДИ, я упрощу вам задачу:
Спасибо, с учетом того что задачи у нас и не бо, теперь она стала вообще простой :)
йцукенг (2007-05-11 13:01:00) [14]ЛЮДИ, я упрощу вам задачу:
- например запущен виндовский калькулятор, известен его хендл. Как получить доступ к его Edit контролу и считать его значение text к примеру?
homm (2007-05-10 23:06:00) [15]> "Какого-нибудь (любого)" <> известного класса, IMHO.
Ну вообще-то в сабже вообше ни о чем не говориться. В том числе нет и намека на то что FindWindowEx или EnumChildWindows могут пригодиться, так что я просто предложил еше один вариант :)
Leonid Troyanovsky (2007-05-10 22:34:00) [16]
> homm © (10.05.07 22:24) [6]
> Мы же не знаем условия задачи. Возможно он известе априорно
> ;)
"Какого-нибудь (любого)" <> известного класса, IMHO.
--
Regards, LVT.
homm (2007-05-10 22:24:00) [17]> Интересно б было узнать класс окна, не зная его хендла.
Мы же не знаем условия задачи. Возможно он известе априорно ;)
Leonid Troyanovsky (2007-05-10 22:22:00) [18]
> homm © (10.05.07 22:13) [4]
> Да нет, достаточно знать точку входа в эту процедуру, а
> ее можно узанать, зная виндовый класс этого окна.
Интересно б было узнать класс окна, не зная его хендла.
--
Regards, LVT.
homm (2007-05-10 22:13:00) [19]> Выделить нечто относящееся именно к оконной процедуре некоего
> контрола можно лишь зная хендл оного.
Да нет, достаточно знать точку входа в эту процедуру, а ее можно узанать, зная виндовый класс этого окна. Еще можно встрять в цикл PeekMessage/DispatchMessage.
Leonid Troyanovsky (2007-05-10 22:08:00) [20]
> homm © (10.05.07 21:44) [2]
> «Какойнибудь» обязательно приходит первым аргументом в оконную
> функцию элемента управления.
Выделить нечто относящееся именно к оконной процедуре некоего
контрола можно лишь зная хендл оного. Т.е., в том и вопрос.
--
Regards, LVT.