В мой тайм-трекер "Соберись, Тряпка!" добавляю глобальный контроль за работой за клавиатурой и мышью, чтобы потом анализировать паттерны разных состояний: повышенной продуктивности, стресса и т.п. (а также много кое-чего другого, связанного с бессознательным).
Нашёл вот такую древнюю либу GMA для клавиатурных и мышиных хуков 20-летней давности :) под NET 2.0.
И вроде всё собирается и компилируется, а не работает. Хорошо, что я 30+ лет назад жёстко кодил под Win32 API, и примерно представляю, где может быть засада.
s_KeyboardHookHandle = SetWindowsHookEx(
WH_KEYBOARD_LL,
s_KeyboardDelegate,
// Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),
IntPtr.Zero, // <= !
0);
Мелкософт🤮 в частности рекомендует именно так: SetWindowsHookExA function (winuser.h)
Засада низкоуровневых хуков в том, что они не требуют внедрения длл-ки в другие процессы, и когда мой хук находится в главном .exe, явно указывающая на это передача IntPtr.Zero корректна и ожидаема.
Пофиксил, прорывные исследования по созданию компьютерного интерфейса с подсознанием продолжаю :)
