Форум: "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
2. Получили заголовок окна... требуется получить все хендлы компонентов и их классы, сделаем цикл:
H: HWND;
Zagolovok:array[0..255] of Char;
...
begin
H:= GetActiveWindow // - узнаем текущее активное окно
GetWindowText(H, Zagolovok, SizeOf(Zagolovok)); //- считываем заголовок
Код:В ListBox1 будут выведены классы всех child окон
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;
← →
Сергей М. © (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.009 c