Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Перехват движения мыши, подключенной к заданному п


Автор: Mixasik 24.12.2008, 18:33
Добрый вечер... Вот возникла нужда сделать один маневр  Допустим у меня к компу подключено 2 мыши, как известно, они обе буду перемещать указатель по экрану... Мне нужно, чтобы одна из этих мышей двигалась, но указатель не перемещался по экрану, а просто постоянно координаты мыши записывались в заданный файл... То есть только 1 мышка будет использоваться для управления компом, а изменение положения второй не должно влиять на перемещение курсора... Подскажите как это реализовать и в какую сторону копать? В моем распоряжении есть знания Delphi, ну на крайний случай си...
Вся проблема в том, что мыши две должно быть, нормальная и та с которой просто надо координаты считывать((

Автор: ama_kid 24.12.2008, 23:58
Цитата(Mixasik @  24.12.2008,  19:33 Найти цитируемый пост)
в какую сторону копать?
Думаю, копать в сторону драйвера-фильтра будет самым правильным... По практической стороне вопроса не подскажу, сам таким вопросом не задавался, но для начала можно посмотреть исходники драйвера http://cpnmouse.sourceforge.net/

Автор: Mixasik 25.12.2008, 01:06
У меня вот возникла идея(просто на драйвер мне сказали - "не стоит")... Как это проще сделать. Ставим глобальную ловушку на перемещение мыши, +... Допустим у нас 2 мыши на USB001 и USB002 итак, на 001 мышь которая должна выполнять свои основные функции - изменять положение курсора, а на 002 та которая просто должна передавать "свои координаты", и в итоге нам надо просто узнать какая мышь совершает движение, как мне кажется проверить,, что на порту 002 - если ничего значит первая мышь, итого 1 мышь совершает движение - пропускаем, если вторая просто пишем в файл координаты не двигая мышь? С учетом того что одновременно может тольео одна мышь совершать движение? Или все таки только драйвер? Отсюда вопрос: Как узнать какая именно мышь совершает движение? Если по порту я верно предположил, то как считать с порта или проверить его?

Автор: ama_kid 27.12.2008, 13:50
Цитата(Mixasik @  25.12.2008,  02:06 Найти цитируемый пост)
Ставим глобальную ловушку на перемещение мыши
В глобальном перехватчике, устанавливаемом через штатные средства операционной системы, нет информации о том, какая мышка послала сообщение.
Цитата(Mixasik @  25.12.2008,  02:06 Найти цитируемый пост)
как мне кажется проверить,, что на порту 002 - если ничего значит первая мышь
Работа с портами в Windows доступна только из ring0  smile 

Автор: Mixasik 27.12.2008, 18:39
А что такое ринг ноль? Ну в глобальной ловушке мы узнаем какая мышка совершила движение так: Если есть данные на порту 002 - значит вторая, если нет - первая... Или я не так мыслю?

И в инете видел компонент для Delphi для работы с usb портами - там вроде и драйвер шел.

Автор: ama_kid 27.12.2008, 20:34
Цитата(Mixasik @  27.12.2008,  19:39 Найти цитируемый пост)
А что такое ринг ноль?
http://ru.wikipedia.org/wiki/Ring0. В данном случае я подразумевал - "из драйвера".
Цитата(Mixasik @  27.12.2008,  19:39 Найти цитируемый пост)
И в инете видел компонент для Delphi для работы с usb портами - там вроде и драйвер шел
А если мышка подключена к PS\2? К COM-порту? (сейчас уже практически не осталось таких вариантов, конечно, но все-таки...)

Автор: Mixasik 27.12.2008, 21:20
Ну мышка будет точно подключена к USB... Проблема тут в в другом... А если использовать этот компонент? Вот качал http://rapidshare.com/files/30660299/dlpiusb.zip.html

Автор: ama_kid 28.12.2008, 11:25
Цитата(Mixasik @  27.12.2008,  22:20 Найти цитируемый пост)
А если использовать этот компонент?
В составе данного компонента есть драйвер, так что вполне возможно, он и даст необходимую информацию (хотя я и сомневаюсь, но проверять лень). Попробуй, потом расскажешь smile

Автор: Mixasik 28.12.2008, 17:10
Драйвер установился нормально, но его не удается запустить, пишу net start FTD2XX в результате
Код

Системная ошибка 1058.

Указанная служба не может быть запущена, поскольку она отключена или все связанные с ней устройства отключены.

Может под вистой не работает?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)