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

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

Вывести список компонент чужого окна. [D7, WinXP]


Страницы:   1 2

worldmen ©   (2008-10-20 11:32:00) 

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


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

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

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


123   (2008-10-23 23:22:00) [2]

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


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


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


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


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


> Vayrus   (23.10.08 14:44) [18]


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


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

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


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


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


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


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


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


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

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


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


> worldmen   (23.10.08 10:23) [12]


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

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


brother   (2008-10-23 10:37:00) [9]

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

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


clickmaker   (2008-10-23 10:35:00) [10]

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

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


worldmen   (2008-10-23 10:23:00) [11]

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


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


> 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-21 09:46:00) [13]

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


GrayFace   (2008-10-20 23:28:00) [14]

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

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


clickmaker   (2008-10-20 13:12:00) [15]

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

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


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


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


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


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

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


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

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


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


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


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


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


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


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

Я вот кое-что нашел, буду пробовать:
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 окон


Страницы:   1 2

Наверх

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