Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать видимым элемент управления [D7, WinXP]


G-h-o-s-t ©   (2005-10-27 14:02:00) 

Есть в чужом приложении кнопка она не видима...нужно какую-то команду ей послать..чтобы сделать ее видимой...
Какую?


ANB   (2005-10-28 16:20:00) [1]

Сначала проверить спаем, есть ли вообще нужная тебе кнопка или другой контрол на окне. Спай показывает даже невидимые, если они существуют и являются окнами. В нем же сможешь определить текст для поиска. У некоторых контролов текст на экране не совпадает с заголовком (эдиты). Имя же компонента никакого значения для виндовс не имеет.


Leonid Troyanovsky   (2005-10-27 18:57:00) [2]


> G-h-o-s-t   (27.10.05 18:51) [9]
> Логично..но допустим..оно там всетаки есть...если быть точным
> это радиобатон....но поскольку его не видно я не знаю его
> название..тоесть класс я знаю, а можно ли получить его хендл.
> .не зная текста?


Ну, можно пустить {Delphi}\bin\Winsight.exe и рассмотреть название
или CtrlId или, хотя бы, z-order.
Если, конечно, окно в этот момент существует.

--
Regards, LVT.


G-h-o-s-t   (2005-10-27 18:51:00) [3]

Логично..но допустим..оно там всетаки есть...если быть точным это радиобатон....но поскольку его не видно я не знаю его название..тоесть класс я знаю, а можно ли получить его хендл..не зная текста?


Leonid Troyanovsky   (2005-10-27 18:36:00) [4]


> G-H-O-S-T   (27.10.05 18:29) [7]

> спасибо конечно за совет...но эту процедуру мне нужно проделать
> с другой программой, а не со своей и на каое событи там
> повешана невидимость я не знаю.....


Если в чужом приложении оного окна нет, то, увы его там и не найти.
Сл-но, нельзя сделать видимым то, что не существует.
Логично, не правда ли?

--
Regards, LVT.


G-H-O-S-T   (2005-10-27 18:29:00) [5]

> Leonid Troyanovsky ©   (27.10.05 16:40) [6]
спасибо конечно за совет...но эту процедуру мне нужно проделать с другой программой, а не со своей и на каое событи там повешана невидимость я не знаю.....


Leonid Troyanovsky   (2005-10-27 16:40:00) [6]


> G-h-o-s-t   (27.10.05 14:46) [4]

> нажимать сколько хочешь...но если в первом проэкте я делаю
> кнопку не активой и невидимой..то все...
> h2:= FindWindowEx(h, 0, 'TButton', 'Button1'); возвращает 0


Если ты делаешь Visible := False в дизайнере, или, скажем
в OnCreate, то окно этой кнопки просто не создается.
Попробуй сделать Visible := False в OnShow формы.

--
Regards, LVT.


Zeqfreed   (2005-10-27 15:45:00) [7]

G-h-o-s-t   (27.10.05 14:46) [4]
ShowWindow прекрасно работает для стандартных контролов, коим кнопка из VCL не является.. Так сразу даже и не знаю как с ней быть; она вообще определяется как видимая, когда на самом деле на форме не отображается.


G-h-o-s-t   (2005-10-27 14:46:00) [8]

Да ничего я не путаю..ну ты сам поробуй прежде чем советовать
я создаю сприложение с кнопкой...если эта кнопка видима на форме то из другого приложения функция
h2:= FindWindowEx(h, 0, 'TButton', 'Button1');
возвращает значение тоесть дискриптор кнопки..и если она даже не активна..я
с помощью EnableWindow(h2,True); делаю ее активной и можно нажимать сколько хочешь...но если в первом проэкте я делаю кнопку не активой и невидимой..то все...
h2:= FindWindowEx(h, 0, 'TButton', 'Button1'); возвращает 0
вот и все...че тут путать программу из которой я вызываю эту функцию я не меняю...меняю только свойство в первой
видимый на невидимый и все


Zeqfreed   (2005-10-27 14:37:00) [9]

G-h-o-s-t   (27.10.05 14:23) [2]

> как получить дескриптор..невидимого контрола?

Точно так же как и видимого.

> функция h2:= FindWindowEx(h, 0, 'TButton', 'Button1');

Опять же, уверен, что h корректный дескриптор? :)
Класс 'TButton' и имя окна 'Button1' у тебя, я так понимаю, потому, что ты тестируешь работоспособность метода на своем приложении и своих контролах? Если так, то может путаешь Caption и Name кнопки? В ф-цию FindWindowEx нужно передавать именно Caption, в терминологии VCL.


G-h-o-s-t   (2005-10-27 14:23:00) [10]

Может и так, а у меня не работет..
функция h2:= FindWindowEx(h, 0, 'TButton', 'Button1');
не возвращает дискриптор невидимой кнопки...по этому видимо и не работет
тогда..чтобы не плодить ветки как получить дескриптор..невидимого контрола?


Zeqfreed   (2005-10-27 14:14:00) [11]

G-h-o-s-t   (27.10.05 14:02)
ShowWindow(h, SW_NORMAL);работает и незачем плодить ветки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо