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

Вниз

Хук WH_CBT   Найти похожие ветки 

 
Sodom ©   (2003-01-24 13:00) [0]

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

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 13:31) [1]

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


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

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


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

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


 
Sodom ©   (2003-01-24 15:35) [4]

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



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.028 c
4-54369
Иксик
2003-01-24 15:42
2003.03.17
Как получить список handle ов всех элементов управления на форме


1-53980
calm
2003-03-06 10:48
2003.03.17
Почему не перерисовывается Listbox?


3-53874
User_OKA
2003-02-25 08:11
2003.03.17
Сортировка


3-53928
Wizzard
2003-02-26 06:02
2003.03.17
Как сделать реверс-сортировку в TClientDataSet (без SQL)


6-54142
R4D][
2003-01-26 12:31
2003.03.17
Работа с WinSock2