Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хук 
:(
    Опции темы
Mag
Дата 16.8.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 23.6.2005

Репутация: нет
Всего: нет



Покажите полный пример хука для левой клавиши мыши с импортами и описаниями методов.
Разбирался, написал:
Код

...
private static LowLevelKeyboardProc _proc = HookCallback;
        private static IntPtr _hookID = IntPtr.Zero;
        private const int WH_MOUSE = 13;
...
// installs an application-defined hook procedure into a hook chain
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, HandleRef hMod, int dwThreadId);
        //removes a hook procedure installed in a hook chain by the SetWindowsHookEx function. 
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool UnhookWindowsHookEx(IntPtr hhk);
        //passes the hook information to the next hook procedure in the current hook chain
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
        //Retrieves a module handle for the specified module. The module must have been loaded by the calling process
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern HandleRef GetModuleHandle(string lpModuleName);
        //hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.
        public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
 
public static IntPtr SetHook(LowLevelKeyboardProc proc)
        {
            using (Process curProcess = Process.GetCurrentProcess())
            using (ProcessModule curModule = curProcess.MainModule)
            {
                //installs an application-defined hook procedure into a hook chain
                return SetWindowsHookEx(WH_MOUSE, proc, GetModuleHandle(curModule.ModuleName), 0);
            }
        }

        //
        public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {

            if ((nCode >= 0) && (wParam == (IntPtr)WH_MOUSE) )
            {
                MessageBox.Show("22");
                
                //Reads a 4-byte signed integer from the current stream and advances the current position of the stream by four bytes. 
                int vkCode = Marshal.ReadInt32(lParam);
                if (((Keys)vkCode == Keys.LWin) || ((Keys)vkCode == Keys.RWin))
                {
                    MessageBox.Show("11");
                    Console.WriteLine("{0} blocked!", (Keys)vkCode);
                    return (IntPtr)1;
                }
            }
            //passes the hook information to the next hook procedure in the current hook chain.
            MessageBox.Show("33");
            return CallNextHookEx(_hookID, nCode, wParam, lParam);
        }

        public Form2()
        {
            //Call this method to start sending debug reports to the named pipe.
            _hookID = SetHook(_proc);
            // Required for Windows Form Designer support
            InitializeComponent();     
...


Неработает! В конец запутался. 
--------------------
В  каждой черной комнате есть выход - всегда есть выход с любой ситуации!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.