Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 24.01.2009
Сообщений: 5

Хук WH_CALLWNDPROC

03.02.2009, 22:34. Показов 3639. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте коллеги. Написал класс, пытаюсь поставить глобальный хук на WH_CALLWNDPROC, но почему-то мой хук убивает процесс explorer прога тоже виснет ну и т.д.
Не могу понять в чем дело, подскажите пожалуйста. Кстати, этот же класс на WH_KEYBOARD_LL работает безупречно. вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        protected int CoreHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode != user32.HC_ACTION)
            {
                return user32.CallNextHookEx(HHOOK, nCode, wParam, lParam);
            }
            else
            {
                HookEventArgs e = new HookEventArgs();
                e.nCode = nCode;
                e.lParam = lParam;
                e.wParam = wParam;
                HookInvoked(e);
                return user32.CallNextHookEx(HHOOK, nCode, wParam, lParam);
            }
        }
 
        public unsafe bool Install(int HookType)
        {
            bool res = false;
            IntPtr hmod = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]);
            HP = new user32.HookProc(CoreHookProc);
            if (HP != null)
            {
                int HHOOK = user32.SetWindowsHookEx(HookType, HP, hmod, 0);//Виснет здесь!!!
                res = (HHOOK > 0);
            }
            return res;
        }
Виснет на установке хука. Хук глобальный, данный класс находится в dll, вызов метода Install экземпляра класса hook разумеется в приложении.
вот вызов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private unsafe void heCallWndProc(object sender, Hook.HookEventArgs e)
        {
          //вообще пустой обработчик события срабатывания хука
        }
 
        private void frmMain_Load(object sender, EventArgs e)
        {
            bool res;
            h_paint_desktop = new Hook();
            res = h_paint_desktop.Install(user32.WH_CALLWNDPROC);//зависает здесь
            if (res)
                 h_paint_desktop.OnHookInvoked += heCallWndProc;
        }
Жду советов. Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2009, 22:34
Ответы с готовыми решениями:

Хук на C# (Hook on C#)
добрый день. знаю на форуме много тем про всякие хуки клавиатуры или мыши, но вирусные программы меня не интересуют, я хотел бы узнать как...

Глобальный хук
Всем доброго времени суток! Помогите написать глобальный хук и функцию для него, чтобы перехватывал вводимый текст с клавиатуры и писал в...

Хук на смену языка
Поскажите, как поставить хук на смену языка.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2009, 22:34
Помогаю со студенческими работами здесь

Хук на ws2_32.dll
День добрый всем. Нужна помощь коллективного разума. Пишу парсер трафика онлайн игры. Поставил хук на прием данных сокета (recv) по...

Глобальный хук на CreateProcess
требуется отслеживать запуск некоторых приложений и прибивать их при запуске, подскажите как реализовать чую полез в дремучий лес , если не...

Повесить хук на LoadLibrary
Добрых времени суток. Очень давно видел где-то информацию, что отследить инжект сторонней библиотеки в полезный процесс можно повесив хук...

Глобальный хук клавиатуры
Я пишу программу с функцией воспроизведения. Мне нужно, что бы программа при нажатии на клавишу начинала воспроизведение, или...

Глобальный хук перестает работать
Всем привет, проблема: есть глобальный хук, он отслеживает какую кнопку я нажал, и если я нажал определенную клавишу то выполняется метод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru