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

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

Компоненты чужого окна [D6, Win95/98, Win2k]


Страницы:   1 2

hooky-mars ©   (2002-05-29 18:34:00) 

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


hooky-mars   (2002-06-09 13:37:00) [1]

Ну так что никак?


hooky-mars   (2002-06-09 12:21:00) [2]

А как поменять атрибуты у ричедита? Черей обычные сообщения немогу


Song   (2002-05-31 22:37:00) [3]

>>Ну и как?

WM_CUT, WM_COPY, WM_PASTE


SergeySA   (2002-05-31 18:55:00) [4]

для hooky-mars

через WinAPI можно делать с визуальными классами, а
не компонентами (как правильно сказал Song)
чё захочешь (только не со SpeedButton у неё нет хэндла,
но и то можно в обход) (Хотя в описании API написано
что FindWindowsEx под NT не пойдёт - не знаю не пробывал)


Есть две основные ф-ции postmessageи sendmessage.

Например возмём строку из listbox (чужое окно)

procedure Tzzz.get(Sender: TObject);
var
hw, ch ,count, i : integer;
buf : array [1..10] of char;
begin
hw:=FindWindow(nil,"Поиск по категориям"); //ищем окно
if hw<>0 then
begin
ch:=FindWindowEx(hw,0,"TListBox",nil);//ищел там листбокс
if ch<>0 then
begin
count:= sendmessage(ch,LB_GETCOUNT,0,0);//сколько же там строк?
if count<>0 then
begin
for i:=0 to count-1 do
begin
sendmessage(ch,LB_GETTEXT,i,integer(@buf));
listbox2.Items.Add(buf);
end;
end else showmessage("Записи отсутствуют.");
end
else showmessage("listbox не найден.");
end
else showmessage("Окно - Поиск по категориям - не найдено.");
end;

Что такое LB_GETTEXT и т.д. и друрие подробности читай в описании API ф-ций.


hooky-mars   (2002-05-31 18:39:00) [5]


> Song

Ну и как?


Song   (2002-05-31 18:33:00) [6]

Через буфер также делается обменом сообщений.


hooky-mars   (2002-05-31 18:31:00) [7]


> Song ©

А через буфер?


Song   (2002-05-31 17:12:00) [8]

Понятие "компонент" есть только у Вашего приложения, которое Вы разарабатываете. У чужого приложения есть понятия "окна". При чём не только те окна что Вы подразумеваете в Вашем проекте под формами, а любые другие визуальные классы (combobox, listbox, button и т.д.) После того как Вы отощите их handle, обращаться к ним можно через SendMessage, PostMessage и некоторые дургие методы.


hooky-mars   (2002-05-31 16:45:00) [9]

Ну так что?


hooky-mars   (2002-05-30 21:36:00) [10]

Проблемс. А как по хэндлу обратиться к самой компаненте( пока только смог прочитать имя) , что-то поменянь на ней(к примеру каптион)?


hooky-mars   (2002-05-30 20:49:00) [11]


> SergeySA

Спасибо! И всем кто ринимал участие в проблеме!


SergeySA   (2002-05-30 18:25:00) [12]

result:=
FindWindowEx(handle_main_window,chid,class,copmonent_name)

handle_main_window - хэндл окна
chid - хэндл компонента (для первого раза = 0, а потом result)
class - например "Tbutton" или NIL
copmonent_name - имя (что видишь) "Ok" - например или или NIL

Пример:
ch1:=FindWindowEx(hw,0,"TListBox",nil);
найдёт 1-й листбокс - вернёт его хэндл
ch2:=FindWindowEx(hw,ch1,"TListBox",nil);
найдёт 2-й листбокс
ну и т.д.


hooky-mars   (2002-05-30 17:55:00) [13]


> Song © (30.05.02 17:53)
> >>Поясните пожалуйста, а то в хелпе на этот счет нет ни
> чего.
>
> Да ладно.... Нажмите-ка них Ctrl+F1

Да точно таже справка и вызывается!


Song   (2002-05-30 17:53:00) [14]

>>Поясните пожалуйста, а то в хелпе на этот счет нет ни чего.

Да ладно.... Нажмите-ка них Ctrl+F1


hooky-mars   (2002-05-30 17:49:00) [15]


> Song © (29.05.02 23:40)
> FindWindowEx()
> GetWindow()
> Это вопрос из АПИ.

Поясните пожалуйста, а то в хелпе на этот счет нет ни чего.


Игорь Шевченко   (2002-05-30 11:56:00) [16]

Написать аналог FindControl, зная идентификатор потока чужого приложения и hWnd.


Song   (2002-05-30 11:38:00) [17]

2MaximatorVeter © (30.05.02 11:27
Вы бы тему ещё раз перечитали.


MaximatorVeter   (2002-05-30 11:27:00) [18]

Form1.Components
Form1.ComponentCount
Form1.ComponentIndex


Song   (2002-05-29 23:40:00) [19]

FindWindowEx()
GetWindow()
Это вопрос из АПИ.


~Sergius   (2002-05-29 22:58:00) [20]

УППС.
Прошу извинить! Невнимательно прочитал вопрос


Страницы:   1 2

Наверх

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