Загрузка...

Глобальные хуки, только в winforms :)

Тема в разделе C/C++ создана пользователем roseny 1 апр 2023. 220 просмотров

  1. roseny
    roseny Автор темы 1 апр 2023 https://lolz.live/threads/6625908 271 8 ноя 2021
    А ну ка ребятки, если шарите за WinForms, помогите хуки клавы и мышки реализовать, а то я вообще потерялся
    C++/CLI если что
     
  2. Daemon
    Daemon 1 апр 2023 1680 8 янв 2021
    Тогда может стоит в раздел C# обратиться? C++/CLI это платформа .net
     
    1 апр 2023 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. Daemon
      roseny, так суть не в синтаксисе, а в платформе, люди из раздела c# знают api .net
    3. Daemon
      roseny, тем более вы никакого кода в теме не публиковали, так что вам в ответ могут код на c# скинуть например и вы уже переведете на .net плюсы
    4. Daemon
      roseny, вы не совсем понимаете, wf не для c# а для ,net и код вы пишите на C++/CLI а не на C++ (смешанная сборка: байт код + нативный код)
  3. ChatGPT
    ChatGPT 1 апр 2023 2251 14 мар 2023
    roseny, конечно, я могу помочь с реализацией глобальных хуков клавиатуры и мыши в WinForms на C++/CLI. Вот пример кода, который можно использовать:

    CPP

    #include <Windows.h>

    using namespace System::Windows::Forms;

    // Функция, которая будет вызываться при нажатии клавиши
    LRESULT CALLBACK KeyboardHookCallback(int nCode, WPARAM wParam, LPARAM lParam)
    {
    if (nCode >= 0)
    {
    // Получаем информацию о нажатой клавише
    KBDLLHOOKSTRUCT* pKeyboardHookStruct = (KBDLLHOOKSTRUCT*)lParam;
    if (pKeyboardHookStruct != nullptr)
    {
    // Обрабатываем нажатие клавиши
    // ...
    }
    }

    // Вызываем следующий хук в цепочке
    return CallNextHookEx(nullptr, nCode, wParam, lParam);
    }

    // Функция, которая будет вызываться при движении мыши
    LRESULT CALLBACK MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam)
    {
    if (nCode >= 0)
    {
    // Получаем информацию о движении мыши
    MSLLHOOKSTRUCT* pMouseHookStruct = (MSLLHOOKSTRUCT*)lParam;
    if (pMouseHookStruct != nullptr)
    {
    // Обрабатываем движение мыши
    // ...
    }
    }

    // Вызываем следующий хук в цепочке
    return CallNextHookEx(nullptr, nCode, wParam, lParam);
    }

    // Функция для установки глобальных хуков клавиатуры и мыши
    void SetGlobalHooks()
    {
    // Устанавливаем хук клавиатуры
    HHOOK hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookCallback, GetModuleHandle(nullptr), 0);
    if (hKeyboardHook == nullptr)
    {
    MessageBox::Show("Failed to set keyboard hook!");
    }

    // Устанавливаем хук мыши
    HHOOK hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookCallback, GetModuleHandle(nullptr), 0);
    if (hMouseHook == nullptr)
    {
    MessageBox::Show("Failed to set mouse hook!");
    }
    }

    // Функция для удаления глобальных хуков клавиатуры и мыши
    void RemoveGlobalHooks()
    {
    // Удаляем хук клавиатуры
    UnhookWindowsHookEx(SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookCallback, GetModuleHandle(nullptr), 0));

    // Удаляем хук мыши
    UnhookWindowsHookEx(SetWindowsHookEx(WH_MOUSE_LL, MouseHookCallback, GetModuleHandle(nullptr), 0));
    }
    Этот код устанавливает глобальные хуки клавиатуры и мыши и вызывает соответствующие функции обратного вызова при нажатии клавиши или движении мыши. Вы можете добавить свой код обработки нажатий клавиш и движений мыши в соответствующие функции обратного вызова.
     
Загрузка...
Top