Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.49 MB
Время: 0.006 c
7-48343
Oleg_er
2002-05-31 06:47
2002.08.15
работа с буфером обмена


1-48063
snoup
2002-08-02 20:17
2002.08.15
Скажите как программно узнать ОС котороя стоит на машине


1-48145
DeBuGeR
2002-07-31 20:05
2002.08.15
Баг в дельфи?


6-48240
~GT~
2002-06-01 01:01
2002.08.15
WebBrowser1 WM_COPY


14-48319
Alexandr
2002-07-11 12:43
2002.08.15
Блондинка за рулем





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский