IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Хук на HCBT_CREATEWND
Unconnected
сообщение 13.09.2010 23:07
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем smile.gif

Надо поставить хук на создание окон. Нашел (и слегка модифицировал) такой код:

var HookHandle: hHook;

function CBTProc(Code: integer; WParam: word; LParam: Integer): Longint; stdcall;
type PCBT_CREATEWND=^CBT_CREATEWND;
var s: pchar;
z: PCBT_CREATEWND;
ok: Integer;
s2:string;
i:byte;
begin
if Code<0 then begin
Result := CallNextHookEx(HookHandle, code, WParam, LParam);
exit;
end;
case Code of
HCBT_CREATEWND: begin
z:=PCBT_CREATEWND(LParam);
s:=z.lpcs.lpszName;
if s<>nil then begin
s2:='';
for i:=1 to length(s) do begin
s2:=s2+s^;
inc(s);
end;
if pos('Блокнот',s2)>0 then begin
Result:=1;
exit;
end;
end;
end;
end;
Result := 0;
end;

begin
HookHandle := SetWindowsHookEx(WH_CBT, @CBTProc, HInstance, 0);
end;


Я сделал перевод из pchar в string, до этого там была какая-то жутко тупая проверка, которая почему-то работала. Этот код, как я понял, распространяется только на моё приложение. hookhandle>=0.

Сообщение отредактировано: Unconnected - 13.09.2010 23:13


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.09.2010 12:26
Сообщение #2


Гость






Цитата
Ну для инфиума, например - TFRMMAN
Ага, щаззз smile.gif Ты знаешь, сколько Инфиум создает всякой гадости ДО TFrmMan.UnicodeClass? Вот лог создания окон (имена классов) при первом запуске QIP Infium (еще ничего не настроено - появляется только окно приглашения создать новый аккаунт или выбрать существующий):

madToolsMsgHandlerWindow$a28$40cf4c
madToolsMsgHandlerWindow$a28$40cf4c
TApplication
IME
TPUtilWindow
TPUtilWindow
TPUtilWindow
GDI+ Hook Window Class
IME
OleMainThreadWndClass
TPUtilWindow
TPUtilWindow
TPUtilWindow
TfrmCore.UnicodeClass
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
xxxxWorker
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TPUtilWindow
TfrmMan.UnicodeClass
TInfuButton.UnicodeClass
TInfuComboBox.UnicodeClass
ComboLBox
Edit
CicMarshalWndClass
MSCTFIME UI
TInfuBitBtn.UnicodeClass
TInfuEdit.UnicodeClass
TInfuCheckBox.UnicodeClass
TPUtilWindow
TPUtilWindow
TfrmNewRegWiz.UnicodeClass
TPUtilWindow
IcsWndControlWindowClass
IcsWndControlWindowClass
IME
TfrmNewRegWiz.UnicodeClass
TInfuPanel.UnicodeClass
TInfuPanel.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass
TInfuBitBtn.UnicodeClass

А ты говоришь, TFrmMan... Ну, убьешь ты его, и что? smile.gif Получишь окошко QIP-а об ошибке "не могу найти хендл объекта", так? Даже пробовать не буду, ибо знаю, что так и есть. Не зря столько служебных окон создается перед главным.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unconnected   Хук на HCBT_CREATEWND   13.09.2010 23:07
volvo   Хм. Интересно, куда подевались все вопросительные ...   13.09.2010 23:59
Unconnected   В том, что код не работает как надо ) (по идее, пр...   14.09.2010 0:05
volvo   С чего бы это? Заголовок окна Блокнота создается п...   14.09.2010 0:59
Unconnected   Нуу.. я изменил code на WH_Shell, этого достаточно...   14.09.2010 1:22
volvo   Нет, конечно. Но меня посетила шальная мысль: а че...   14.09.2010 1:35
Unconnected   Дык это только в примере блокнот, может я ещё чего...   14.09.2010 15:09
volvo   Вот именно потому, что нужна универсальность - теб...   14.09.2010 16:25
Unconnected   Я бы выбрал перехватывать HCBT_CREATEWND. В ориг...   14.09.2010 16:31
volvo   Что значит, нет Хэндла? Я где-то тебе сказал про т...   14.09.2010 17:21
Unconnected   А у меня есть хитроумная функция, которая выдаст п...   14.09.2010 17:27
volvo   универсальность нужна..и Приблизительно получится ...   14.09.2010 17:48
Unconnected   И правда, по классу лучше определять.. что-то я не...   14.09.2010 18:23
volvo   Можешь прикрепить весь проект?   14.09.2010 18:27
Unconnected   Он на "любимом" KOL... :) Надо? Но ловуш...   14.09.2010 18:29
volvo   Ну, поскольку Дельфи у меня под рукой нет, и не бу...   14.09.2010 19:10
Unconnected   Какое ценное лирическое отступление! Так зна...   14.09.2010 19:19
volvo   Хм... Надо было все-таки исходники попросить у теб...   14.09.2010 19:26
Unconnected   Ту би контин, блин.. Короче, такая dll: library p...   14.09.2010 20:10
volvo   Заставил ты меня все-таки написать работающий хук ...   14.09.2010 21:24
Unconnected   У меня почти то же самое было, только это работает...   14.09.2010 21:34
volvo   Можно (через Project->Resources->New->Use...   14.09.2010 22:01
Unconnected   Простенький ксор перед добавлением в ресурсы, и по...   15.09.2010 10:49
Unconnected   Ещё вопрос, относительно "обратной связи...   15.09.2010 15:43
volvo   Ага, размечтался :) Вот здесь посмотри, как возвра...   15.09.2010 17:28
Unconnected   :blink: офигеть, из-за одной переменной столько ко...   15.09.2010 17:43
volvo   Угу. Если получилось - удалил, ты имеешь в виду? М...   15.09.2010 22:22
Unconnected   Устанавливается один раз, в библиотеке массив из...   15.09.2010 22:28
volvo   Если нужно просто возвращать индекс заблокированно...   15.09.2010 22:54
Unconnected   Вот так шлю: const wm_user=$0400; //в библио...   15.09.2010 23:39
volvo   :blink: Это еще зачем? MSDN явно говорит:Ты регис...   15.09.2010 23:58
Unconnected   Очевидное-невероятное, блин! Передаю в sethook...   16.09.2010 15:02
volvo   В общем, если не хочешь потерять еще три дня, и по...   16.09.2010 15:31
Unconnected   Короче на данный момент я остановился на текстовик...   16.09.2010 17:06
volvo   :blink: Смотри, как выглядит DLL с расшаренной па...   16.09.2010 17:21
Unconnected   Кажется понял, в библиотеке просто делается указат...   17.09.2010 15:15
volvo   Вообще-то DLL-ке все равно, как ее подгружают, хот...   17.09.2010 15:34
volvo   Все-таки решил добавить. Интересная и познавательн...   17.09.2010 18:34
Unconnected   Блин, ковырялся с дллами - и заснул) И как я её ...   17.09.2010 19:22
volvo   Вот ты будешь смеяться, но: прекрасно удаляет ту...   17.09.2010 20:37
Unconnected   Да, действительно. Мою, впрочем, тоже удаляет о...   17.09.2010 21:25
Unconnected   И ещё незадача.. я тут пробовал на разные приложен...   18.09.2010 9:54
volvo   "Некоторые" - это какие, например? (жела...   18.09.2010 10:06
Unconnected   Например мессенджер QIP, в журнале такое: Ошибка п...   18.09.2010 10:10
volvo   И какой класс окна ты запрещаешь, чтоб "погас...   18.09.2010 10:14
Unconnected   Ну для инфиума, например - TFRMMAN (в полном назва...   18.09.2010 10:32
volvo   Ага, щаззз :) Ты знаешь, сколько Инфиум создает вс...   18.09.2010 12:26
Unconnected   :blink: Фигассе я наивный... А можно название прог...   18.09.2010 13:07
volvo   Я тебе лучше покажу, как DLL-ку изменить, чтоб так...   18.09.2010 13:22
Unconnected   Хм.. попробовал тормозить все классы, стоящие до T...   18.09.2010 14:42
volvo   Неправда :) if (pos(UpperCase('tapplic...   18.09.2010 16:16
Unconnected   Кажется, поправку на ветер забыл :) У меня багрепо...   18.09.2010 23:49
volvo   Можешь показать, как именно ты "приостанавлив...   19.09.2010 12:53
Unconnected   //uses tlhelp32; function KillTask(ExeFileName: s...   19.09.2010 13:18
volvo   Ну не знаю... Ловить HCBT_CREATEWND, и вместо того...   19.09.2010 15:44
Snake_B   это точно так же снесет QIP... Останется только п...   19.09.2010 23:57
Unconnected   Ловить HCBT_CREATEWND, и вместо того, чтобы просто...   19.09.2010 17:18
volvo   Попробуй посмотреть вот тут: http://rouse.drkb.ru/...   20.09.2010 1:28
Snake_B   Попробуй посмотреть вот тут: http://rouse.drkb.ru...   20.09.2010 1:38
volvo   Ну да, трею, разумеется...   20.09.2010 2:48


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 8:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"