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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.011 c
15-1254984944
Savek
2009-10-08 10:55
2009.12.06
Недостаточно привилегий


15-1254879107
VladOfMonster
2009-10-07 05:31
2009.12.06
Windows Seven


15-1255109110
31512
2009-10-09 21:25
2009.12.06
Вопрос о использовании Random в многопоточном приложении


2-1255711170
den49
2009-10-16 20:39
2009.12.06
Чтение из файла при помощи Filestream


15-1254991631
ocean
2009-10-08 12:47
2009.12.06
Когда я пытаюсь быстро печатать,