А ну ка ребятки, если шарите за WinForms, помогите хуки клавы и мышки реализовать, а то я вообще потерялся C++/CLI если что
Daemon, так код пишется на c++, а не на c# я понимаю, что winforms для C#, но синтаксис другой в зависимости от языка
roseny, тем более вы никакого кода в теме не публиковали, так что вам в ответ могут код на c# скинуть например и вы уже переведете на .net плюсы
roseny, конечно, я могу помочь с реализацией глобальных хуков клавиатуры и мыши в WinForms на C++/CLI. Вот пример кода, который можно использовать: #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)); } 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)); } Этот код устанавливает глобальные хуки клавиатуры и мыши и вызывает соответствующие функции обратного вызова при нажатии клавиши или движении мыши. Вы можете добавить свой код обработки нажатий клавиш и движений мыши в соответствующие функции обратного вызова.