| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Узнать имя главного окна по хэндлу контрола |
| Автор: gonzales 14.5.2006, 01:19 |
| Собственно САБЖ Поясню, использую функцию WindowFromPoint(Mouse.CursorPos) для нахождения хандла контрола под мышью, а как зная хандл получить информацию о главном окне, на котором расположен контрол (его хандл, имя процесса) че то затупил, не могу сообразить всем заранее спасибо |
| Автор: Nickel 14.5.2006, 10:33 | ||
|
| Автор: gonzales 14.5.2006, 12:24 |
| спасибо, не догадался getparent в цикл запустить но есть еще одна засада, когда getparent в цикле то в некоторых приложения верхний уровень становится не главное окно, а Tapplication, а мне этого не надо! Как этого избежать??? |
| Автор: Nickel 14.5.2006, 13:26 |
| Это в каких приложениях? |
| Автор: gonzales 15.5.2006, 01:25 |
| например BSPlayer, BeholdTV (это от ТВ-Тюнера) |
| Автор: Nickel 15.5.2006, 12:38 | ||
А с чего ты решил? И неплохо было бы посмотреть код. |
| Автор: gonzales 15.5.2006, 13:56 | ||||
с того, что я выхожу на верхний уровень, получаю хандл контрола, смотрю его класс - и он TAplication а код
|
| Автор: Nickel 16.5.2006, 16:58 | ||||
| Тут оказывается не всё так просто... Скачал я BSPlayer (BeholdTV решил не стоит, наверняка только со своим тюнером работает). Поковырял его - действительно написан на делфи! Посмотрел в Spy++, действительно у всех окошек плеера Parent - TApplication. Создал своё приложение из 3-ёх форм и обламался, потому что у всех окон нет parent'a , хотя owner так же как и у BSPlayer - TApplication. Вот такая вышла загагулина, однако интуиция подсказала менять все набодряд свойства форм, что дало результат. Parent зависит от BorderStyle. Например если он - bsSingle, то у окошка parent'ом будет TApplication, а если bsSizeable, то то parent'a не будет. Вот такие пироги... Первый способ решения проблемы:
Однако, только ли в делфях такой прикол? Да и в принципе при желании TApplication можно переименовать. Способ намбер два основан на том, что хитрое окошко TApplication имеет размеры 0 на 0 пикселей ( кстати оно висит прям по середине экрана и, как оказалось, в качестве фона использует wallpaper с рабочего стола =):
|
| Автор: gonzales 17.5.2006, 11:05 | ||
йоу, отличная мысль жаль не могу пока тебе репутацию поднять но все равно спасибо, все работает |