Форум: "WinAPI";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизКомпоненты чужого окна Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c