Среда, 18 Декабря 2024, 13:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Сложность написания данной программы
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 (getName)
Ассемблер

Машинные коды? Это слишком!
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
старожил
Сейчас нет на сайте
Ну, как сделать инверсию кнопок мыши вы уже разобрались. biggrin Но вот проблема: Dinaros хочет, чтобы это всё получалось автоматически, т.е. в зависимости от того, в какой порт въехала наша мышь. Проблема здесь в том, что usb-порты называются в зависимости от производителя и настроек системы. Мышь тоже называться может по-разному.
Т.е. в системе возникает сообщение "устройство NN подключилось к порту XX"...
Короче, это было бы слишком сложно.
Demeron, не думаю, что это стоит того... Сложно сделать (опять следить за портами), а пользы минимум.
Я предлагаю поступить так: делаем минимальную программу, которая с помощью, например, hook'ов следит за нажатиями клавиш. Если нажата комбинация, скажем, [shift]+[alt]+[m], программа переключает кнопки мыши. Т.е. даже не нужно переключать мышь от порта к порту. Допустим, работал правша, потом подошёл левша, сел за комп, перекинул мышь на левую сторону (провод у любой мыши длинный) и нажал комбинацию [shift]+[alt]+[m]. Поработал, ушёл. Пришёл правша, перекинул мышь направо, даже не отключая от USB, и нажал [shift]+[alt]+[m]. Может работать спокойно. Как вам, а? Во-первых, не надо мудрить с портами и идентификацией устройств, а во-вторых экономится время на перенос мыши. Да и потом, такая программа будет компактней той, которая следит за портами - экономия памяти и ресурсов.
Пользуйтесь на здоровье. cool


GECKДата: Понедельник, 04 Июля 2011, 04:34 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Quote (TimKruz)
Короче, это было бы слишком сложно.

Где в тебе спортивный интерес? smile

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

Глубоко. biggrin А лень, между прочим, двигатель прогресса. cool
Quote (GECK)
А как выглядят эти NN и XX можно выяснить эмпирически. Или приделать окошко с настройками, где эти значения можно задать. Сложность, в общем, в отлове подключения устройства.

Настройки, настройки, настройки... Проще открыть окошко с настройками мыши, чем три часа искать название устройства мыши и портов. crazy
И вот, кстати. Конфигурация железа может быть разной, а программа должна работать на любом железе, иначе придётся для каждого компа настраивать. killed
Всё гениальное просто. cool
P.S. Dinaros, сам сделать такую программу сможешь, надеюсь?


DemeronДата: Понедельник, 04 Июля 2011, 13:36 | Сообщение # 14
User created in C++
Сейчас нет на сайте
Quote (TimKruz)
P.S. Dinaros, сам сделать такую программу сможешь, надеюсь?

Думаю, что он сделает) Программа то легкая, строк в 50 уместиться DLL с хуком и функцией переключения, да и так, сток 10 для самой exe.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг