Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2015, 11:54   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию Хуки в службах

Здравствуйте, подскажите в чем может быть проблема?

Нужно сделать службу помощника админу. Одно из требований это умение перехватывать сообщения от клавы.
В общем почитал для службы нужно получать активный рабочий стол для перехвата. Делал по аналогии с Служба для Shell
Разве что хук ставлю на клаву.

Делаю вот так:
Код:
 staHandle = KeyboardHook.OpenWindowStation("WinSta0", false, KeyboardHook.AccessMask.MAXIMUM_ALLOWED);
                if (staHandle.DangerousGetHandle() != IntPtr.Zero)
                {
                    descHandle = KeyboardHook.OpenDesktop("Default", 0, false, KeyboardHook.AccessMask.MAXIMUM_ALLOWED);
                    if (descHandle != IntPtr.Zero)
                    {
                        if (KeyboardHook.SetThreadDesktop(descHandle))
                        {
                            // register evens
                            keyboardHook.KeyDown += new KeyboardHook.KeyboardHookCallback(keyboardHook_KeyDown);
                            keyboardHook.KeyUp += new KeyboardHook.KeyboardHookCallback(keyboardHook_KeyUp);
                            // теперь можно ставить хук
                            keyboardHook.Install();
                            eventLog1.WriteEntry("HOOKID  " + keyboardHook.hookID.ToString(), EventLogEntryType.Information, eventId++);
                        }
                    }
                }
хук вешаю вот таким способом:
Код:
using (ProcessModule module = Process.GetCurrentProcess().MainModule)
                return SetWindowsHookEx(13, proc, GetModuleHandle(module.ModuleName), 0);
После запуска службы в журнал падает сообщение "HOOKID 22872237" значит хук прицепился. Но события нажатия и отжатия никак не вызываются.

В чем может быть косяк?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 24.09.2015 в 11:56.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
windows хуки videolord Общие вопросы C/C++ 1 09.01.2012 14:18
Хуки,Иньекции shanluu Win Api 0 22.10.2011 19:52
Хуки в C# kostaNew C# (си шарп) 1 19.08.2011 23:30
хуки Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 27 09.08.2011 09:50
Хуки в Windows JeyKip Win Api 11 09.05.2010 00:33