![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приведение любого контрола к типу TObject по его Handle [D7, WinXP]
Nike © (2006-04-24 15:24:00)Здравствуйте! У меня есть хэндлы контролов из других программ, но для дальнейшей работы с ними необходимо привести их к типу TObject. Подскажите, пожалуйста, как это сделать.
Palladin (2006-04-24 16:58:00) [1]В заключение.
1.
Приведение Handle к TObject осуществляется как: TObject(Handle), но использование подобного приведения сводится лишь к хранению.
2.
Handle контрола стороней программы и VCL Delphi твоей - никакаким боком не связанны, частные случаи (а конкретно: программа написанна на тойже версии Delphi) возможны, но крайне сложны и стольже крайне нерекомендуемы.
Мефисто (2006-04-24 16:53:00) [2]evvcom © (24.04.06 16:45) [8]
Я и оставил небольшой комент сомнения по этому поводу в своем же посте. Зачем повтарять дважды? :)
KSergey (2006-04-24 16:48:00) [3]> evvcom © (24.04.06 16:35) [6]
> Аргументировать что? Что Handle (видимо, подразумевается
> hWnd) - идентификатор окна ОС не является объектом класса,
> реализованного в Дельфи? Тут, по-моему, и аргументировать
> нечего. Windows ничего не знает об объектах созданных в
> той или иной версии Дельфи, Си и прочих средах программирования.
> С такими хендлами можно работать только через функции ОС,
> предназначенные для такой работы.
При чем тут "идентификатор окна ОС не является объектом класса"?? Сказано же: "привести к типу TObject". Привести к типу - в любом случае можно! Может он их в TObjectList хочет пихать? Зачем путаете человека и додумываетет то, чего не было в вопросе??
evvcom (2006-04-24 16:45:00) [4]function FindControl(Handle: HWnd): TWinControl;
Ну и чего она найдет, если
> У меня есть хэндлы контролов из других программ
Функция вернет nil и делов-то. Это объект другой среды! Delphi о его структуре ничего не знает!
Мефисто (2006-04-24 16:38:00) [5]FindControl ?
Хотя если >> контролов из других программ и если прога не написана на дельфи, то наверно могут быть глюки.
evvcom (2006-04-24 16:35:00) [6]
> А нельзя ли аргументировать?
Аргументировать что? Что Handle (видимо, подразумевается hWnd) - идентификатор окна ОС не является объектом класса, реализованного в Дельфи? Тут, по-моему, и аргументировать нечего. Windows ничего не знает об объектах созданных в той или иной версии Дельфи, Си и прочих средах программирования. С такими хендлами можно работать только через функции ОС, предназначенные для такой работы.
KSergey (2006-04-24 16:12:00) [7]> evvcom © (24.04.06 15:58) [3]
> > KSergey © (24.04.06 15:47) [2]
> См.[1]
Спасибо, читать я умею.
А нельзя ли аргументировать?
Гаврила (2006-04-24 16:01:00) [8]Привести то их можно. Другое дело, что это "нечто" не будет являться TObject'ом
И при любой попытке поработать с ним как с TObject получишь по рукам.
Надо объяснять, почему?
evvcom (2006-04-24 15:58:00) [9]
> KSergey © (24.04.06 15:47) [2]
См.[1]
KSergey (2006-04-24 15:47:00) [10]TObject(ControlHandle)
это я подразумеваю, что под словом "хэндлы контролов" подразумеваются хендлы соотв. окон. Ну или другие 4-х байтные указатели.
Сергей М. (2006-04-24 15:30:00) [11]Считай что никак.