| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Лазер мышки |
| Автор: Ergoz 30.8.2010, 20:22 |
| Приветствую всех. Хочу написать одну программку, но не могу разобраться как реализовать один момент. Допустим есть 2 юсб мышки, лазерных. Которые если чуть двинул лазер загорается сильнее, через некоторое время тухнет. Так вот вопрос, как можно перехватить загорание и выключение лазера в одной мышке? Нужно отлавливать только какую то определённую мышь.. Я предполагаю что это может быть можно как то через SetWindowsHookEx(WH_MOUSE, @HookProc, HInstance,0) ; Но я не знаю что именно перехватывать.. где искать материалы по возможностям перехвата таких вещей.. Нужно только загорание лазера отловить и всё... И моя программка будет закончена. п.с. Движение мышки не предлагать! проставлюсь пивом если поможете! |
| Автор: Frees 30.8.2010, 20:51 |
| в мыши нет лазера Вряд ли мышь информирует систему о загорании "лазера" |
| Автор: Ergoz 30.8.2010, 20:58 |
| ну да, я имел ввиду светодиод этот красный, как определить програмно что он включился и выключился??? ну не думаю я что это на самой плате пропечатано в микроконтроллере... я уверен что как нибудь это сделать можно... |
| Автор: CodeMonkey 30.8.2010, 22:57 |
| Никак. Эта информация не выходит за пределы мыши. Мышь обменивается с системой только пакетами данных со смещениями и нажатыми кнопками. Резона ей передавать, когда там у неё включается подсветка, как несложно догадаться - никакого. Но вы можете угадать. Типа, через полторы секунды после последнего движения мыши. Но смысл? У одной мыши полторы, у другой две, а третья и вовсе лазерная - у неё подсветки нету. |
| Автор: Ergoz 30.8.2010, 23:28 |
| просто делаю лазерную сигнализацию, как описано в этой статье: _http://www.delphiexpert.ru/view_lesson.php?id=74 но не могу придумать как сделать так чтоб можно было поставить сигналку, и в это же время спокойно работать за тем же помпьютером, а ставить отдельный серв под это нет возможности.. может вы подкините идей? Может можно как то заблокировать одну только мышку на дивжение, но обрабатывать команды, опять же только с неё? Не могу понять как именно нужную мышку определить.. |
| Автор: CodeMonkey 31.8.2010, 13:19 |
| Упал. Под стол. |
| Автор: casinosoftguru 31.8.2010, 16:09 |
| попробуй поискать какой нибудь usb monitor и отловить сигнал который выдает мышь если в ее "лазер" светить указкой как в видеопримере.. именно на нужном тебе порту. в идеале - придется перепаять устройство - выкинуть все ненужное из конструкции мыши и написать свой драйвер автор видеоурока использовал делфи чтобы событие отловить именно движения над кнопкой.. а к событию загорелся\потух "лазер" у мыши надо подходить имхо с другой стороны |
| Автор: Ergoz 31.8.2010, 21:40 |
| ну это да) но хотелось чтоб меньше геморроя было))) |
| Автор: CodeMonkey 1.9.2010, 01:59 |
| Меньше геморроя? Купите конструктор Лего со светодатчиками - получится в разы проще и (что главное) функциональнее. |
| Автор: Mikel 1.9.2010, 10:01 |
| Мышка о переключении яркости светодиода сообщать не будет- это фишка самой мыши, экономия энергии. Если б можно было измерять ток соответствующего USB порта, то можно было бы и определить когда он включается ярче. Но во-первых, ток не измеряется, а есть только порог срабатывания превышения тока потребления, а во-вторых, если бы даже и измерялось, будет некорректно срабатывать при подключении еще одного устройства. |
| Автор: Ergoz 2.9.2010, 00:59 |
| хорошо, тогда скажите, реально ли отследить определённую мыш, как именно определённую мышку найти, и сделать так что именно если она послала сигнал о перемещении то тогда выполнить определённый код, но блокировать от этой мышки все перемещения? но чтоб вторая мыш в это время спокойно работала и программа на неё никак не реагировала? |
| Автор: Mikel 2.9.2010, 08:55 |
| Посмотрел первый ролик- изврат А вообще попробуй так- выдирай фотоэлемент из мыши, подключаешь последовательно через резистор (значение подбирается эмпирически Да, резистор ставь хотя бы 500 Ом. Если реакции от его подключения и свечения указкой не будет, уменьшай. |
| Автор: v1m 2.9.2010, 19:17 | ||
да он же там не смотрит загорается или нет(до конца не досмотрел) он смотрит сместился ли курсор. |
| Автор: Ergoz 3.9.2010, 00:43 |
| в том то и дело, а я хочу сделать иначе) вот и спрашиваю. с перемещением курсора любой может сделать)) А разве нельзя хукнуть определённую мышь? или хукается сразу всё? |
| Автор: CodeMonkey 3.9.2010, 00:47 |
| В Windows не существует понятия "отдельная мышь" для прикладного уровня. |
| Автор: Ergoz 3.9.2010, 11:09 |
| то есть то что я хочу сделать можно реализовать только на уровне драйвера, или пустить через компорт или как то не софтовым образом? жаль) спасибо за инфу, буду пытаться что-то придумать... |
| Автор: CodeMonkey 3.9.2010, 13:01 |
| Вам уже подсказали насчёт LPT порта (и конструктора Лего |
| Автор: Ergoz 3.9.2010, 23:23 |
| да, я уже скачал даже схему лтп порта, но ещё не совсем понял как оттуда реагировать на события, но погуглю. спс за идеи! |
| Автор: northener 4.9.2010, 00:14 | ||
Вряд ли гугль поможет. Там большинство примеров (если не все) относятся к временам MS-DOS. А вот подходящий "конструктор ЛЕГо" (с) CodeMonkey посоветовать можно. Но нужно научиться работать с микропроцессорами. Достаточно простейших. А уж сколько интересных конструкций можно при этом сделать! Ваши знакомые будут просто в отпаде! |
| Автор: v1m 4.9.2010, 11:04 |
помог... http://www.pcports.ru/Articles.php |
| Автор: CodeMonkey 4.9.2010, 12:36 |
| На самом деле много чего готового можно найти. Я как-то интереса ради программировал LCD дисплейчик на 4 текстовых строки, подключаемый к LPT. Но для практики - плюнул и взял готовую прожку. |
| Автор: Ergoz 4.9.2010, 16:59 |
| вим!! спс за ссыль!!! очень интересные статьи, кто может поставьте плюс ему от меня.. поехал за резисторами и светодиодами... надо сообразить как с лпт порта остледить отсутствие луча лазерной указки, какие нужны вещи.. я не радиоэлектронщик |
| Автор: northener 5.9.2010, 02:28 | ||
Да гугль помог! Автор раскошелился! |
| Автор: Ergoz 5.9.2010, 04:40 |
| Да, я уже даже продумал схему работы)) посылаем через внешнее устройство (фотоэлемент, датчик движения и др) пакет, на часть Status, оттуда программа каждые 1-2 секунды читает значение, и если оно изменилось то реагируем на это. Сегодня обошёл весь район, нигде провода лпт нету, полная попа, придётся ехать на горбушку, там искать, и нужно PSI карточку взять с портом... в общем работы ещё куча, а проблем ещё больше с этим (проводов почти не достать) |