HookProc param - null - PullRequest
       4

HookProc param - null

0 голосов
/ 25 августа 2010

Я сделал низкоуровневый хук мыши, и он отлично работает, за исключением одной проблемы: параметр процедуры.

вот мой код: http://pastebin.com/X2198UTb

Мой HookProc находится в середине кода под моим комментарием.

Это проблема или так должно быть? если это должно быть так - как я могу узнать, какое окно должно получить щелчок правой кнопкой мыши? /// Я добавил условие для активации события - щелчок правой кнопкой мыши.

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Ваш код довольно запутанный из-за того, что вы объявили константу WH_MOUSE значением 14. WH_MOUSE на самом деле имеет значение 7, а 14 - значение WH_MOUSE_LL (и да, я знаю, что вы написали «низкий уровень» ваш вопрос).

Но затем вы продолжаете использовать связанные с WH_MOUSE типы. В частности, подключаемая процедура ловушки WH_MOUSE_LL получает структуру MSLLHOOKSTRUCT, а не используемую вами MOUSEHOOKSTRUCT.

Кроме того, как намекал Ханс и Тергивер, вы должны передать дескриптор модуля своего собственного кода, а не User32.dll. Попробуйте использовать Marshal.GetHINSTANCE (typeof (globalMouse) .Module).

0 голосов
/ 25 августа 2010

Это даже не должно работать вообще.Если вы попытаетесь сделать то же самое (используя LoadLibrary («User32») и идентификатор потока 0) в чистом собственном приложении, оно будет работать только в течение короткого времени.

Для использования глобальной ловушки требуется собственный(нет C #) DLL.Это намного сложнее, чем может показаться, особенно если вы хотите, чтобы он работал на 64-битной Windows, где вам нужны как 32-битная, так и 64-битная DLL-библиотека для инъекций, а также 32- и 64-битная инъекция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...