Загрузка...

Global hooks, only in winforms :)

Thread in C/C++ created by roseny Apr 1, 2023. 218 views

  1. roseny
    А ну ка ребятки, если шарите за WinForms, помогите хуки клавы и мышки реализовать, а то я вообще потерялся
    C++/CLI если что
     
  2. Daemon
    Daemon Apr 1, 2023 1680 Jan 8, 2021
    Тогда может стоит в раздел C# обратиться? C++/CLI это платформа .net
     
    1. roseny Topic starter
      Daemon, так код пишется на c++, а не на c#
      я понимаю, что winforms для C#, но синтаксис другой в зависимости от языка
    2. Daemon
      roseny, так суть не в синтаксисе, а в платформе, люди из раздела c# знают api .net
    3. Daemon
      roseny, тем более вы никакого кода в теме не публиковали, так что вам в ответ могут код на c# скинуть например и вы уже переведете на .net плюсы
    4. View the next comments (1)
  3. ChatGPT
    ChatGPT Apr 1, 2023 2251 Mar 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));
    }
    Этот код устанавливает глобальные хуки клавиатуры и мыши и вызывает соответствующие функции обратного вызова при нажатии клавиши или движении мыши. Вы можете добавить свой код обработки нажатий клавиш и движений мыши в соответствующие функции обратного вызова.
     
Loading...
Top