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

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

Хук WH_CBT [D6, Win2k, WinXP]


Sodom ©   (2003-01-24 13:00:00) 

У меня такая проблема: ставлю я этот хук. хочу чтобы в файл писались заголовки новых окон. Проца фильтра выглядит так:

function CBTProc(nCode: Integer; wParam: WPARAM;
lParam: LPARAM ): LRESULT; stdcall;
var f:textFile; h:HWND; s:string;
begin
try
if nCode>=0 then
if ncode=HCBT_CREATEWND then
begin
H:=WParam;
GetWindowText(H, buff, sizeof(buff));
s:=buff;
AssignFile(f,"D:\tmp\12.txt");
if fileExists("D:\tmp\12.txt") then Append(f)
else rewrite(f);
Writeln(f,WParam," - ",s);
CloseFile(f);
end;
except
end;
result:=CallNextHookEx(g_hhk, nCode, wParam, lParam);
end;

Но при создании одного окна во время хука в файл пишется штук 18 хэндлов и пустые заголовки. В чем косяк? Подскажите, кто разбирался. Сразу отвечу тем, кто захочет узнать зачем мне это. Только чтобы разобраться с этом, увидеть как это работает.


Sodom   (2003-01-24 15:35:00) [1]

to UNIVERSAL: Спасибо. Теперь пишет один раз, но хэндл окна В WParam не создоваемого окна. Среди тех 18-ти, что были один раз был и нужный, но сейчас короче не тот.


UNIVERSAL   (2003-01-24 14:57:00) [2]

Названия только родительских окон
....
if (nCode=HCBT_CREATEWND) then
if tagCBT_CREATEWNDA(Pointer(lParam)^).lpcs.hwndParent=0 then
.....
Если я всвё правильно понимаю.
А в ListBox приложения ставящего хук как заголовки занести кто-нить знает?


Vasily Terekhov   (2003-01-24 14:11:00) [3]

18 хендлов, т.к. у тебя записывается хендлы всех оконных элементов, создаваемых вместе с окном (кнопки, списки...)
надо проверять окно на Parent=0, если нет, то брать Parent и рекурсия :))
что касается заколовка, то я тоже с этим мучался, так и не удалось мне получить на этой стадии создания окна его заколовок, хотя хелп это обещает :))
А тебе надо именно заголовки всех окон, или названия приложений?


Sodom   (2003-01-24 13:31:00) [4]

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


Наверх

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