Главная страница
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.018 c
3-53931
User_OKA
2003-02-26 09:54
2003.03.17
форматирование ячеек Excel


1-54061
Демонов Е.В.
2003-03-04 09:03
2003.03.17
Про дин масив ( продолжение GIL).


1-54040
Спрашивающий
2003-03-04 01:26
2003.03.17
Повторю вопрпос:Взаимодействие OpenDialog и функции DiskFree(0)


14-54300
Nick-From
2003-02-26 19:47
2003.03.17
есть функция Log(x) и Exp(x), как выразить Ln(x) замучился вспоми


14-54226
Серж
2003-02-27 18:49
2003.03.17
Степень!