Страницы

Поиск по вопросам

понедельник, 13 апреля 2020 г.

Глобально отслеживать нажатия клавиш

#c_sharp #события

                    
Как глобально (не в рамках моего приложения) отследить нажимаемые комбинации клавиш
и, если, к примеру, комбинация CTRL+Q то активировать мое приложение? Перенести фокус
то бишь. Ну или на какой-либо элемент в нем. TextBox, например.
Спасибо!    


Ответы

Ответ 1



Посмотрите сюда: MSDN/Hooks overview. Учтите, что с такими трюками ваше приложение не получит Vista Logo (и более поздние сертификации): благопристойной программе не к чему шпионить за другими программами.

Ответ 2



Можно использовать такую подтехнологию WinAPI, как хуки( HOOKS ). Вообще, внедрение низкого уровня в C# - дело не клевое, так как .NET предоставляет массу высокоуровневых( и наиболее удобных, кстати говоря ) замещений WinAPI функциям. Но, если б я столкнулся с вашей задачей, вероятно, я бы решил ее именно так: HOOKPROC hkprcSysMsg; static HINSTANCE hinstDLL; static HHOOK hhookSysMsg; hinstDLL = LoadLibrary(TEXT("c:\\myapp\\MyHookDLL.dll")); hkprcSysMsg = (HOOKPROC)GetProcAddress(hinstDLL, "MyHookProc"); hhookSysMsg = SetWindowsHookEx( WH_KEYBOARD, hkprcSysMsg, hinstDLL, 0); Доки. При этом нажатия клавиш( и их комбинаций ) будет перехвачено глобально, на уровне системы, созданным вами хуком.

Ответ 3



EasyHook starts where Microsoft Detours ends. This project supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment like C# using Windows 2000 SP4 and later, including Windows XP x64, Windows Vista x64 and Windows Server 2008 x64. Also 32- and 64-bit kernel mode hooking is supported as well as an unmanaged user-mode API which allows you to hook targets without requiring a NET Framework on the customers PC. An experimental stealth injection hides hooking from most of the current AV software. http://easyhook.codeplex.com/

Ответ 4



Смотрите в сторону winapi, в шарпе нет возможности взаимодействовать напрямую с неподготовленными приложениями.

Комментариев нет:

Отправить комментарий