Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Две мышки

5.5K
13 апреля 2006 года
Sashusik
13 / / 08.03.2004
Люди помагите, срочно надо! Есть две мышки надо их поотдельности использовать, но вот беда виндовс считает их одной! Как их "распаралелить"...

Я пробовал использовать DirectInput по MSDN:

Var
Mices: Array of TDIDeviceInstanceA;

function EnumMouses(var pdinst : TDIDeviceInstance; pvRef : Pointer) : Integer;
var dewType:Byte;
begin
dewType:=LoByte(pdinst.dwDevType);
dewType:=dewType shl 4;
dewType:=dewType shr 4;

ShowMessage(pdinst.tszProductName);

IF dewType = DIDEVTYPE_MOUSE Then
Begin
SetLength(Mices, Length(Mices)+1);
Mices[Length(Mices)-1]:=pdinst;
End;

Result:=DIENUM_CONTINUE;
end;

...
SetLength(Mices,0);
DInput.EnumDevices(0,@EnumMouses,nil,DIEDFL_ATTACHEDONLY);
...

Вот этото код ДОЛЖЕН (так в МСДН написанно) получить GUID всех мышек, однако сиравно находиться тока одна мышь!Хотя в диспетчере устройст их две...

У кого есть какие идеи (необезательно юзать DirectInput), натолкните на мысль...
391
14 апреля 2006 года
Archie
562 / / 03.02.2005
Цитата:
Originally posted by Sashusik
Люди помагите, срочно надо! Есть две мышки надо их поотдельности использовать, но вот беда виндовс считает их одной! Как их "распаралелить"...

Я пробовал использовать DirectInput по MSDN:

Var
Mices: Array of TDIDeviceInstanceA;

function EnumMouses(var pdinst : TDIDeviceInstance; pvRef : Pointer) : Integer;
var dewType:Byte;
begin
dewType:=LoByte(pdinst.dwDevType);
dewType:=dewType shl 4;
dewType:=dewType shr 4;

ShowMessage(pdinst.tszProductName);

IF dewType = DIDEVTYPE_MOUSE Then
Begin
SetLength(Mices, Length(Mices)+1);
Mices[Length(Mices)-1]:=pdinst;
End;

Result:=DIENUM_CONTINUE;
end;

...
SetLength(Mices,0);
DInput.EnumDevices(0,@EnumMouses,nil,DIEDFL_ATTACHEDONLY);
...

Вот этото код ДОЛЖЕН (так в МСДН написанно) получить GUID всех мышек, однако сиравно находиться тока одна мышь!Хотя в диспетчере устройст их две...

У кого есть какие идеи (необезательно юзать DirectInput), натолкните на мысль...



Может они юзают один драйвер? У меня две мыши (нормальная и планшетная) и работают отдельно, но у них разные драйвера. Конечно, курсор все равно один :) Попробую дома твой код...

5.5K
15 апреля 2006 года
Sashusik
13 / / 08.03.2004
Кому интересно:
Этот же вопрос я задал на gamedev.ru вот ответы:

-----------------------------------------------------------
Lion007
попробуй DIEDFL_ALLDEVICES или DIEDFL_INCLUDEHIDDEN... это так, в порядке эксперимента - интересно, что получится...

Сашусик
Ща проверить не могу мышку забрали) Но ещё проблема в том что GUID который находит функция реагирует на обе мыши, хотя если бы проблема была бы в поиске GUIDA то найденный реагировал на одну мышь... Такое чувство что это из-за того что один драйвер обрабатывает обем мыши или я гоню?

Mirage
Под 2000/XP две мышки через DirectInput работать не будут. Под 9X - должны. Под XP и далее есть так называемый raw input. Копай в эту сторону.

Mirage
Да, есть код (на C) как это используется. От Reflexive (они зачем-то толкают технологию MouseParty, которая в сабже и состоит). http://www.mouse-party.com/MouseParty.zip
-----------------------------------------------------------

Так что впринцепе проблема решена,правдо я ещё не успел проверит, но всё равно - всем спасибо...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог