Как получать уведомления о действиях мыши / клавиатуры без глобальной ловушки? - PullRequest
0 голосов
/ 01 июня 2011

У меня есть прозрачное окно (WS_EX_TRANSPARENT), плавающее сверху.

При каждом перемещении мыши (в любом месте на экране) или при нажатии клавиши на клавиатуре необходимо отображать соответствующую информацию (например, положение мыши).

Возможно ли захватить действия мыши / клавиатуры без использования глобальной ловушки?Антивирусное программное обеспечение почти всегда вызывает ложные срабатывания при использовании глобальных перехватов.

Любая идея с благодарностью.

Ответы [ 4 ]

1 голос
/ 01 июня 2011

Полагаю, GetAsyncKeyState и GetCursorPos могут помочь.Вероятно, у вас может быть поток, вызывающий эти функции каждые 300-500 мсек и отправляющий сообщение в ваш основной поток.

0 голосов
/ 20 марта 2014

LASTINPUTINFO lastInputInfo = new LASTINPUTINFO(); UInt32 lastInputTick = lastInputInfo.dwTime; return Environment.TickCount - (Int32)lastInputInfo.dwTime

Этот код (C #) возвращает время бездействия (клавиатура и мышь оба).Таким образом, вы можете иметь время, так как пользователь неактивен.

0 голосов
/ 01 июня 2011

Вы можете зарегистрироваться для получения необработанных входных сообщений через RegisterRawInputDevices . Взгляните здесь , в принятом ответе RRUZ есть несколько ссылок, одна из которых указывает на реализацию C #. Это работает с оконными сообщениями, без зацепок.

(С помощью этого метода вы также получаете информацию о конкретном устройстве, с которого поступил ввод, так что вы можете различать несколько клавиатур. Именно здесь большинство вопросов, имеющих «использовать RegisterRawInputDevices», как заголовок ответа. Но вы также можете использовать его, чтобы просто захватить ввод, не заботясь об источнике.)

0 голосов
/ 01 июня 2011

Вы можете получать уведомления о действиях клавиатуры / мыши (GetLastInputInfo), и я вполне уверен, что вы можете получить положение курсора (GetMouseMovePointsEx).Если вам не нужны реальные нажатия клавиш, то это должно быть сделано.Если вы это сделаете, я не думаю, что это может быть сделано ...

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