Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Получение списка объектов ядра


Автор: Nastya 5.5.2005, 10:14
Есть возможность получить список объектов ядра и/или окно созданных моим процессом.
Если да, то какой?

Автор: AISIN 5.5.2005, 14:14
Nastya http://forum.sources.ru/index.php?showtopic=38429

Автор: Nastya 5.5.2005, 15:03
Меня в общем-то больше интересуют не объекты ядра, а именно окна

Автор: Step 5.5.2005, 15:34
EnumWindows

получаешь хендлы на их основе берешь родителя и по родителю определяешь твое или нет

Автор: AISIN 5.5.2005, 15:35
Код

BOOL CALLBACK EnumWindowsWnd(
    HWND hwnd,    // handle to parent window
    LPARAM lParam    // application-defined value
   )
{
    SendMessage(hwnd, WM_SETTEXT, 0,LPARAM(LPCTSTR("I See You")));
    EnumChildWindows(hwnd,&EnumChildWnd,0);
    return TRUE;
}
BOOL CALLBACK EnumChildWnd(

    HWND hwnd,    // handle to child window
    LPARAM lParam    // application-defined value
   )
{

    return TRUE;
}

EnumChildWindows(hwnd,&EnumChildWnd,0)

0 - число которое можно передать в функцию обратного вызова
находим внутри главного окна все под окна и и передаем их
в EnumChildWnd.

Автор: _hunter 5.5.2005, 16:11
мне кажется что проще сделать CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0)
потом Thread32First()
тогда EnumThreadWindows()

Автор: Step 5.5.2005, 16:43
_hunter, приложение будет иметь много потоков, опять проверять родителя.. для каждого потока искать окна

Автор: _hunter 5.5.2005, 17:15
мне кажется что для потока найти его окно будет быстрее чем для всех окон имкать родителя...
но это нужно проверить ( чем щас и займусь )...

Автор: _hunter 5.5.2005, 17:57
по результатам тестирования вышло что не быстрее ( причем в 44 раза не быстрее smile )

Автор: AISIN 10.5.2005, 19:37
Цитата(Nastya @ 5.5.2005, 10:14)
Есть возможность получить список объектов ядра и/или окно созданных моим процессом.
Если да, то какой?

_hunter Ну ты молодец конечно, но там написано"созданных моим процессом". т.е. идентификатор родителя уже известен и нужно найти все процессы или окна внутри процесса. И не нужно для всех окон что то имкать. Достаточно имкать для одного нашего окна!

Автор: _hunter 10.5.2005, 19:50
никто и не спорит что моим ( для того 0 и передаю )

Цитата
нужно найти все процессы или окна внутри процесса

этого я не понял...

Цитата
И не нужно для всех окон что то имкать. Достаточно имкать для одного нашего окна!

для какого нашего? того, которое мы ищем? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)