Я работаю над этим совсем немного и не подхожу к решению.Модуль не найден
Я снова выкопал свою старую копию WindowsHookLib - он доступен с исходным кодом в http://www.codeproject.com/KB/DLL/WindowsHookLib.aspx. Эта библиотека позволяет использовать глобальные мыши Windows/Keyboard/Clipboard Hooks, что очень полезно.
Я пытаюсь использовать Mouse Hook здесь для Capture Mouse-Motion (я мог бы использовать таймер, который всегда проверяет Cursor.Position, но позже я планирую использовать дополнительные возможности WindowsHookLib).
код следующим образом:
MouseHook mh = new MouseHook();
mh.InstallHook();
mh.MouseMove += new EventHandler<WindowsHookLib.MouseEventArgs>(mh_MouseMove);
Но при вызове InstallHook(), я получаю исключение: «Указанный модуль не может быть найден». Странный. Поиск, я обнаружил, что кто-то подумал, что это происходит из-за того, что DLL не находится в месте, включенном в переменную Windows PATH, и потому, что ее размещение в system32 не помогло, я отправил весь свиньи и перевел вещь на C# для включения непосредственно в мой проект (мне было любопытно, как это работает).
Однако ошибка была упорно настойчив, поэтому я вырыл немного на этом, и нашел код в библиотеке, которая отвечает: В InstallHook(), мы имеем
IntPtr hinstDLL = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]);
this._hMouseHook = UnsafeNativeMethods.SetWindowsHookEx(14, this._mouseProc, hinstDLL, 0);
if (this._hMouseHook == IntPtr.Zero)
{
throw new MouseHookException(new Win32Exception(Marshal.GetLastWin32Error()).Message);
}
И это (после модификации и перекомпилировать) говорит мне, что я действительно получаю ошибку Windows «ERROR_MOD_NOT_FOUND»! Теперь, здесь я в тупике. Разве я не просто компилировал библиотеку Hook прямо в свой проект?
(UnsafeMethods.SetWindowsHookEx это просто метод DllImported от user32)
Любые ответы или Prods в правильном направлении, или какие-либо намеки, указатели или аналогичные очень ценятся!
Я таргетинг .net 3.5, и это не работает для меня. –