Всем добрый день. Существует ли способ заблокировать движение мыши? Задача собственно у меня в следующем: мне нужно чтобы при построении линии пользователем программно проставлялись зеленые крестики привязки (для возможности построения в последующем путей трэкинга - Alignment point).
Достигаю этого тем, что:
1. отключаю автоматическое проставление этих точек через системную переменную POLARMODE=8;
2. контролирую PointMonitorEventArgs и если e.Context.History&PointHistoryBits.ObjectSnapped) != 0, то запускаю таймер на зависание (System.Timers.ElapsedEventArgs), по истечении которого эмулируется нажатие Шифта (KeyImulate.SendKeyDown(KeyImulate.KeyCode.SHIFT)) и таймер на отжатие этого Шифта (KeyImulate.SendKeyUp(KeyImulate.KeyCode.SHIFT)). Сразу обмолвлюсь, что KeyImulate.SendKeyPress(KeyImulate.KeyCode.SHIFT) - для этих целей не срабатывает, автокаду нужны долисекунды разрыва между нажатием и отжатием шифта, чтобы проставился этот зеленый крестик. Поэтому у меня такие заморочки с двумя таймерами и нажатием/отжатием.
3. И все работает прекрасно, за небольшим исключением, что если пользователь резво двигает мышкой, и в эти долисекунды между нажатием и отжатием шифта выходит за область выбранной точки с Оснэпа, то все или часть зеленых крестиков Alignment point пропадают либо неверно подсчитываются. А мне их нужно считать и фиксировать в программе. Вывод - на долюсекунды до отжатия шифта, нужно мышку отключить, не дать ей двигаться, зафиксировать как-то в выбранной точке. Но как?
Пробовала: Blockinput; messagefilter (при message.Msg= 15 и 512 - return true); GetCursorPos (ловлю значение в точке оснэпа) + ClipCursor (ограничиваю движение курсора этой точкой оснэпа) - не сработало, ноль реакции.