Сложность написания данной программы
| |
Dinaros | Дата: Воскресенье, 03 Июля 2011, 16:45 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Мне срочно потребовалась одна программа, для мудрёностей с мышью. Суть такова - берётся мышка и ноутбук с 4 USB портами по 2 с каждой стороны. Программа нужн такая, чтобы при её запуске мышка настраивалась под правшу или левшу. То есть если мышка подключена к правому USB порту то мышка настроена для правши(то есть ЛКМ отмечает и открывает, а ПКМ для открытия окна(открыть, уудлить и т.д.), а если к левому, то для левшей(понятно уже).
|
|
| |
getName | Дата: Воскресенье, 03 Июля 2011, 16:48 | Сообщение # 2 |
JAVA. Написано однажды, работает везде.
Сейчас нет на сайте
| Ассемблер?
Пришельцы! 2012 (рассказ)
|
|
| |
Kamskii | Дата: Воскресенье, 03 Июля 2011, 16:56 | Сообщение # 3 |
Game ≠ Toy
Сейчас нет на сайте
| Проблема лишь в том, что для компьютера нет правого и левого порта. Поэтому нужно будет это явно указывать в настройках.
|
|
| |
getName | Дата: Воскресенье, 03 Июля 2011, 16:57 | Сообщение # 4 |
JAVA. Написано однажды, работает везде.
Сейчас нет на сайте
| есть лишь usb1, usb2, usb3, usb4
Пришельцы! 2012 (рассказ)
|
|
| |
Demeron | Дата: Воскресенье, 03 Июля 2011, 17:29 | Сообщение # 5 |
User created in C++
Сейчас нет на сайте
| Хахаха! А не проще: Панель управления -> Мышь -> Кнопки мыши -> Снять или поставить галочку возле "Обменять назначение кнопок"??? Добавлено (03.07.2011, 17:29) --------------------------------------------- Вот нашол функцию на WinApi (делай хоть на С/С++, хоть на Pascal и тд...):
Для того, чтобы поменять назначение левой и правой клавиши мыши (относительно текущей настройки) применяется функция API: function SwapMouseButton(fSwap: BOOL): BOOL; Вызов данной функции с параметром true приводит к тому, что при нажатии левой кнопки мыши генерируется сообщение с указание, что нажата правая (и наоборот). Вызов функции с параметром false возвращает систму в исходное состояное. Возвращаемые значения false - если назначение клавиш мыши не было инвертировано на момент вызова функции true - если назначение клавиш мыши было инвертировано на момент вызова функции
|
|
| |
Dinaros | Дата: Воскресенье, 03 Июля 2011, 19:07 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Машинные коды? Это слишком! Quote (Demeron) А не проще: Панель управления -> Мышь -> Кнопки мыши -> Снять или поставить галочку возле "Обменять назначение кнопок"??? Если программа появится то уже нет. А пока тебе удобно будет если каждые полчаса надо будет работать то левше то правше? За этим и нужна. Quote (Demeron) Для того, чтобы поменять назначение левой и правой клавиши мыши (относительно текущей настройки) применяется функция API: function SwapMouseButton(fSwap: BOOL): BOOL; Вызов данной функции с параметром true приводит к тому, что при нажатии левой кнопки мыши генерируется сообщение с указание, что нажата правая (и наоборот). Вызов функции с параметром false возвращает систму в исходное состояное. Возвращаемые значения false - если назначение клавиш мыши не было инвертировано на момент вызова функции true - если назначение клавиш мыши было инвертировано на момент вызова функции Надо будет поискать...
|
|
| |
GECK | Дата: Воскресенье, 03 Июля 2011, 19:25 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Статейка по программному определению устройств(на делфи, с полными исходниками). Может чем поможет, правда я пока сам не понял, как можно узнать, куда именно подключена мышь.
Всё гениальное просто. И хреново работает.
|
|
| |
PBPROG | Дата: Воскресенье, 03 Июля 2011, 21:51 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Вот такая прожка-прикол на PureBasic позволяет рандомно (случайно) менять назначение правой и левой кнопок мышки. Если код немного изменить, то будет то, что требуется. Code FSwap = -1 Repeat : SwapMouseButton_(FSwap) FSwap = ~FSwap Delay((Random(4) + 1) * 100) ForEver
|
|
| |
Demeron | Дата: Воскресенье, 03 Июля 2011, 22:05 | Сообщение # 9 |
User created in C++
Сейчас нет на сайте
| Dinaros, короче говоря, проблема лишь состоит в том, чтобы отловить момент подключения мыши, а дальше можно будет вывести окно с 2 кнопками ("Я левша", "Я правша"), и сделать чтобы кнопки нажимались как левой, так и правой кнопками. А дальше пользоваться функцией SwapMouseButton, в зависимости от нажатой кнопки. (Тоесть "Я левша" = SwapMouseButton(true); а "Я правша" = SwapMouseButton(false); , вот и всё!)
|
|
| |
TimKruz | Дата: Воскресенье, 03 Июля 2011, 22:41 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| Ну, как сделать инверсию кнопок мыши вы уже разобрались. Но вот проблема: Dinaros хочет, чтобы это всё получалось автоматически, т.е. в зависимости от того, в какой порт въехала наша мышь. Проблема здесь в том, что usb-порты называются в зависимости от производителя и настроек системы. Мышь тоже называться может по-разному. Т.е. в системе возникает сообщение "устройство NN подключилось к порту XX"... Короче, это было бы слишком сложно. Demeron, не думаю, что это стоит того... Сложно сделать (опять следить за портами), а пользы минимум. Я предлагаю поступить так: делаем минимальную программу, которая с помощью, например, hook'ов следит за нажатиями клавиш. Если нажата комбинация, скажем, [shift]+[alt]+[m], программа переключает кнопки мыши. Т.е. даже не нужно переключать мышь от порта к порту. Допустим, работал правша, потом подошёл левша, сел за комп, перекинул мышь на левую сторону (провод у любой мыши длинный) и нажал комбинацию [shift]+[alt]+[m]. Поработал, ушёл. Пришёл правша, перекинул мышь направо, даже не отключая от USB, и нажал [shift]+[alt]+[m]. Может работать спокойно. Как вам, а? Во-первых, не надо мудрить с портами и идентификацией устройств, а во-вторых экономится время на перенос мыши. Да и потом, такая программа будет компактней той, которая следит за портами - экономия памяти и ресурсов. Пользуйтесь на здоровье.
|
|
| |
GECK | Дата: Понедельник, 04 Июля 2011, 04:34 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| Quote (TimKruz) Короче, это было бы слишком сложно. Где в тебе спортивный интерес?
Quote (TimKruz) Т.е. в системе возникает сообщение "устройство NN подключилось к порту XX" А как выглядят эти NN и XX можно выяснить эмпирически. Или приделать окошко с настройками, где эти значения можно задать. Сложность, в общем, в отлове подключения устройства.
Всё гениальное просто. И хреново работает.
|
|
| |
Dinaros | Дата: Понедельник, 04 Июля 2011, 08:48 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| У меня ASUS K40AB, ноутбук(кому непонятно). Добавлено (04.07.2011, 08:48) --------------------------------------------- TimKruz, а интересная идея, а я, дурак, сам не зная что пытаюсь узнать и к вам обратился!
|
|
| |
TimKruz | Дата: Понедельник, 04 Июля 2011, 13:22 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Quote (GECK) Где в тебе спортивный интерес? smile Глубоко. А лень, между прочим, двигатель прогресса. Quote (GECK) А как выглядят эти NN и XX можно выяснить эмпирически. Или приделать окошко с настройками, где эти значения можно задать. Сложность, в общем, в отлове подключения устройства. Настройки, настройки, настройки... Проще открыть окошко с настройками мыши, чем три часа искать название устройства мыши и портов. И вот, кстати. Конфигурация железа может быть разной, а программа должна работать на любом железе, иначе придётся для каждого компа настраивать. Всё гениальное просто. P.S. Dinaros, сам сделать такую программу сможешь, надеюсь?
|
|
| |
Demeron | Дата: Понедельник, 04 Июля 2011, 13:36 | Сообщение # 14 |
User created in C++
Сейчас нет на сайте
| Quote (TimKruz) P.S. Dinaros, сам сделать такую программу сможешь, надеюсь? Думаю, что он сделает) Программа то легкая, строк в 50 уместиться DLL с хуком и функцией переключения, да и так, сток 10 для самой exe.
|
|
| |
|