Блокировка мыши

Автор Тема: Блокировка мыши  (Прочитано 283 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sergolgaАвтор темы

  • ADN OPEN
  • Сообщений: 31
  • Карма: 0
Блокировка мыши
« : 13-02-2018, 19:28:53 »
Всем добрый день. Существует ли способ заблокировать движение мыши? Задача собственно у меня в следующем: мне нужно чтобы при построении линии пользователем программно проставлялись зеленые крестики привязки (для возможности построения в последующем путей трэкинга - 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 (ограничиваю движение курсора этой точкой оснэпа) - не сработало, ноль реакции.
Не считайте себя умнее! (Даже если Ваш оппонент - женщина.:)))
Лучше день потерять, а потом за 2 минуты долететь!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 7661
  • Карма: 900
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Блокировка мыши
« Ответ #1 : 13-02-2018, 20:22:44 »
Существует ли способ заблокировать движение мыши?
Это главный вопрос? Тогда что такое блокировка движения мыши?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sergolgaАвтор темы

  • ADN OPEN
  • Сообщений: 31
  • Карма: 0
Re: Блокировка мыши
« Ответ #2 : 13-02-2018, 21:14:27 »
Боюсь сморозить глупость. Видимо какая-то тонкость от меня ускользает. Но для меня "способ заблокировать движение мыши" и "блокировка движения мыши" - одно и то же. Мне нужно, добиться, чтобы на долюсекунды, между программным нажатием и отжатием шифта, курсор не сдвигался с выбранной до нажатия шифта точки. Предполагаю, что автокад в этом случае не должен реагировать на движения мышки, совершаемые пользователем.
Не считайте себя умнее! (Даже если Ваш оппонент - женщина.:)))
Лучше день потерять, а потом за 2 минуты долететь!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 7661
  • Карма: 900
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Блокировка мыши
« Ответ #3 : 13-02-2018, 21:24:25 »
Я не буду комментировать то, как Вы издеваетесь над AutoCAD. Это Ваше дело.
Из AutoCAD API только это может теоретически помочь: http://adn-cis.org/kak-realizovat-windows-xuk-s-ispolzovaniem-acedregisterfilterwinmsg-v-.net.html
Всё остальное - это хуки в Windows, часть из которых, как я понял Вы испробовали и они не работают. Хочу напомнить, что AutoCAD многопоточное приложение, так что блокировка мыши может быть крайне нетривиальным делом.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 1511
  • Карма: 327
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Блокировка мыши
« Ответ #4 : 13-02-2018, 22:01:18 »
Всем добрый день. Существует ли способ заблокировать движение мыши?
Off-Topic: показать



 ::)

Оффлайн sergolgaАвтор темы

  • ADN OPEN
  • Сообщений: 31
  • Карма: 0
Re: Блокировка мыши
« Ответ #5 : 14-02-2018, 14:06:48 »
Дмитрий, боюсь в моем случае - это не вариант  ;D.

Александр, спасибо за направление - попробую побороться.
Не считайте себя умнее! (Даже если Ваш оппонент - женщина.:)))
Лучше день потерять, а потом за 2 минуты долететь!