"Переключение" между несколькими мышами

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

"Переключение" между несколькими мышами

Сообщение areh » 02.12.2005 (Пт) 15:58

Ситуация следующая:
пишу простенькую игрушку..
игра расчитана на несколько команд
управляется игра исключительно с помощью мыши..

надо сделать так:
использовать 3-4 мыши (USB)
сделать так, чтобы в определенный момент, работала только одна (нужная) мышь...
соответственно, необходимо предварительно идентифицировать мыши,т.е. определить, какая мышь, какой команде "пренадлежит", и в зависимости от ситуации выключать все кроме одной...

подскажите, как мне такое реализовать?

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 05.12.2005 (Пн) 9:55

сделал, но немного "коряво":

с помощью System.Managment, получаю список мышей, в массив записываю их DeviceID. Дальше использую утилитку от Microsoft - DevCon, с помощью которой и отключаю "ненужные" мыши...

теперь вопрос заключается в том, можно ли включать/выключать оборудование, не используя дополнительных утилит?

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 02.03.2006 (Чт) 7:53

возникла очередная проблемма...
сходил в магазин, купил пару одинаковых USB мышей...

запускаю написанный код
Код: Выделить всё
Dim Searcher As New Management.ManagementObjectSearcher("Select * from Win32_PointingDevice")
Dim ObjectCollection As Management.ManagementObjectCollection = Searcher.Get
Dim tmpObj As Management.ManagementObject

Dim i As Integer = -1
Dim tmpStr As String
ReDim MouseStatus(0)

For Each tmpObj In ObjectCollection
   tmpStr = tmpObj.Item("DeviceID").ToString

   If (tmpStr.IndexOf("HID") = 0) or (tmpStr.IndexOf("USB") = 0) Then
      i += 1

      ReDim Preserve MouseStatus(i)
      With MouseStatus(i)
         .Enable = IIf(tmpObj.Item("Status").ToString.ToUpper = "OK", True, False)
         .DeviceID = tmpStr
      End With
   End If
Next


получаю вот что:
мой код писал(а):HID\VID_046D&PID_C025\6&2FAC1111&0&0000
USB\VID_046D&PID_C03E\5&34DBB0D0&0&2
USB\VID_046D&PID_C03E\5&34DBB0D0&0&2

т.е. он одинаковым мышам выдал одинаковые DeviceID... что не может быть правдой...

запускаю devcon, смотрю, что он скажет про набор моих мышей..
devcon писал(а):Listing 3 device(s) for setup class "Mouse" (Mice and other pointing devices).

HID\VID_046D&PID_C025\6&2FAC1111&0&0000 : HID-compliant MX500 Optical Mouse
HID\VID_046D&PID_C03E\6&17A02E6F&0&0000 : HID-compliant mouse
HID\VID_046D&PID_C03E\6&4E67DCA&0&0000 : HID-compliant mouse


т.е. он говорит, что мыши то различаются...

может кто подскажет, в чем может быть дело? как мне получить то же самое, что и devcon выдает?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 02.03.2006 (Чт) 13:08

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

Код: Выделить всё
  Dim Searcher As New Management.ManagementObjectSearcher("Select * from Win32_PnPDevice")

        Dim ObjectCollection As Management.ManagementObjectCollection = Searcher.Get
        Dim tmpObj As Management.ManagementObject
        Dim Out As String = ""

        Try
            For Each tmpObj In ObjectCollection
                Out &= tmpObj.GetText(Management.TextFormat.Mof)
            Next

        Catch Ex As Exception
            MsgBox("Nothing") : Exit Sub
        End Try

        Out = Out.Replace(vbLf, vbCrLf)
        TextBox1.Text = Out


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 103

    TopList