Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
worldmen   (2008-10-20 11:32) [0]

Вывести список компонент чужого окна - это можно сделать?


 
Сергей М. ©   (2008-10-20 11:36) [1]

что такое "компонент чужого окна" ?


 
clickmaker ©   (2008-10-20 11:36) [2]

у окна нет компонентов. Есть дочерние окна, но если приложение написано на дельфи, то некоторые компоненты (Label, к примеру) окнами не являются.
EnumChildWindows()


 
worldmen   (2008-10-20 12:12) [3]

Я вот кое-что нашел, буду пробовать:
1. Раз в компонент на форме осуществлялся ввод, то форма полюбому активна, тада:
Код:
var
  H: HWND;
  Zagolovok:array[0..255] of Char;
...
begin
  H:= GetActiveWindow // - узнаем текущее активное окно
  GetWindowText(H, Zagolovok, SizeOf(Zagolovok)); //- считываем заголовок
2. Получили заголовок окна... требуется получить все хендлы компонентов и их классы, сделаем цикл:
Код:

var
  Wnd: HWND;
  Buff:array[0..255] of Char;
begin
 H:=GetActiveWindow;
 Wnd:= GetWindow(H, gw_child);
 While Wnd <> 0 then begin
 If (GetParent(Wnd) = H) then begin
     GetClassName(Wnd,Buff,SizeOf(Buff));
     ListBox1.Items.Add(StrPas(buff)); // добавляем в список классов
 end;
 Wnd:= GetWindow(H, gw_HWNDNext);
 end;
В ListBox1 будут выведены классы всех child окон


 
Сергей М. ©   (2008-10-20 12:26) [4]


> В ListBox1 будут выведены классы всех child окон


А вопрос твой звучал совсем иначе


> компонент чужого окна


"child окно" <> "компонент"


 
worldmen   (2008-10-20 12:40) [5]

Да, точно, не то.


 
worldmen   (2008-10-20 13:00) [6]

Но если мы знаем имя класса окна - можно же узнать дочерние классы этого окна?


 
Сергей М. ©   (2008-10-20 13:03) [7]


> можно же узнать дочерние классы этого окна?
>


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


 
clickmaker ©   (2008-10-20 13:12) [8]

> имя класса окна - можно же узнать дочерние классы этого
> окна?

там нет понятия "дочерние классы"
класс окна - это не то, что класс в ООП
есть дочерние окна, я уже писал - EnumChildWindows()


 
GrayFace ©   (2008-10-20 23:28) [9]

worldmen   (20.10.08 12:12) [3]
1. Раз в компонент на форме осуществлялся ввод, то форма полюбому активна, тада:

GetActiveWindow возвращает окно от данного потока.


 
worldmen   (2008-10-21 09:46) [10]

> GrayFace ©
> GetActiveWindow возвращает окно от данного потока.
Создал тестовую форму с несколькими полями - Прога-1
Создал программу (Прога-2) с GetActiveWindow - а она почемуто эта функция возвращает имя окна только самой программы (Прога-2),когда она активна, а не активной Проги-1(даже когда она активна) - почему?


 
Сергей М. ©   (2008-10-21 10:58) [11]


> worldmen   (21.10.08 09:46) [10]


Ты читать умеешь ?
Читай внимательно справку:

The GetActiveWindow function retrieves the window handle to the active window associated with the thread that calls the function.


 
worldmen   (2008-10-23 10:23) [12]

Т.е. возвращает то, чем было вызвана функция?
Так мне перевел промт:
"Функция GetActiveWindow восстанавливает маркер окна к активному окну, связанному с потоком, который вызывает функцию."


 
clickmaker ©   (2008-10-23 10:35) [13]

> восстанавливает маркер окна к активному окну

возвращает дескриптор (описатель) активного окна
Промпту двойка


 
brother ©   (2008-10-23 10:37) [14]

> Промпту двойка

он никогда не отличался хорошим переводом


 
Сергей М. ©   (2008-10-23 10:47) [15]


> worldmen   (23.10.08 10:23) [12]


Каждое существующее в системе окно принадлежит конкретному создавшему его потоку.

Если в потоке T1 были созданы окна W1 и W2, а в потоке T2 - W3 и W4, и в дан.момент времени активно, например, окно W3, то ф-ция GetActiveWindow, будучи вызыванная в потоке T1 вернет 0 (потому что текущее активное окно НЕ принадлежит потоку T1), в то время как та же ф-ция, вызыванная в потоке T2, вернет хэндл окна W3.


 
worldmen   (2008-10-23 11:37) [16]

Спасибо, даже не знал такого. А можно переходить в другие потоки?
--------------------
Я нашел то что искал здесь http://forum.codeby.net/topic3765.html


 
Сергей М. ©   (2008-10-23 11:53) [17]


> можно переходить в другие потоки?


Что значит "переходить" ?


> нашел то что искал здесь


Там нет ни слова про "список компонент чужого окна".


 
Vayrus   (2008-10-23 14:44) [18]

Удалено модератором
Примечание: Ненужно так делать.


 
Сергей М. ©   (2008-10-23 14:53) [19]


> Vayrus   (23.10.08 14:44) [18]


Это что, PR-акция ?)


 
Vayrus   (2008-10-23 17:34) [20]


> Это что, PR-акция ?)


Нет, Вы о чем, что я сделал не так? Я дал ссылку человеку на ветку, которая, возможно, помогла бы ему решить его проблему.


 
123   (2008-10-23 23:22) [21]

Удалено модератором


 
worldmen   (2008-10-24 09:31) [22]

> Сергей М. ©   (23.10.08 11:53) [17]
> Там нет ни слова про "список компонент чужого окна".

Я просто не правильно вопрос задал.



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

Форум: "WinAPI";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.005 c
15-1254688209
Юрий
2009-10-05 00:30
2009.12.06
С днем рождения ! 5 октября 2009 понедельник


15-1255117556
PoPooPoP
2009-10-09 23:45
2009.12.06
doc => tex


2-1255702102
Aleks
2009-10-16 18:08
2009.12.06
Как узнать индекс доб.итема в ListView?


15-1254918035
Kerk
2009-10-07 16:20
2009.12.06
Регэксп


2-1255524674
madmech@yandex.ru
2009-10-14 16:51
2009.12.06
Как убрать скроллбар у DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский