Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.15;
Скачать: CL | DM;

Вниз

Компоненты чужого окна   Найти похожие ветки 

 
hooky-mars   (2002-05-29 18:34) [0]

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


 
SPeller   (2002-05-29 20:26) [1]

Никак. Только манипулируя их окнами.


 
~Sergius   (2002-05-29 22:56) [2]

А зачем, чтобы выводить окно поверх других нужно знать о его "компонентах". Пошли ему просто сообщение ShowWindow с нужными параметрами. А искать его по FindWindow


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

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


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

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


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

Form1.Components
Form1.ComponentCount
Form1.ComponentIndex


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

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


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

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


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


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

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


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

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

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


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


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

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


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

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 20:49) [12]


> SergeySA

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


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

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


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

Ну так что?


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

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


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


> Song ©

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


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

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


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


> Song

Ну и как?


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

для 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 ф-ций.



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

>>Ну и как?

WM_CUT, WM_COPY, WM_PASTE


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.08.15;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
8-48209
_ncux_
2002-04-08 15:30
2002.08.15
I need HELP


14-48268
Виктор
2002-07-14 10:48
2002.08.15
Печать на GDI-принтере


4-48372
z_z
2002-06-10 23:03
2002.08.15
Форма на рабочем столе


4-48360
Makss
2002-06-09 15:48
2002.08.15
окно


1-48087
SemFLY
2002-07-28 21:02
2002.08.15
Печать документа Word