Skip to content

Instantly share code, notes, and snippets.

@SpacePurr
Last active April 8, 2020 17:18
Show Gist options
  • Save SpacePurr/f92b17b415c176474fd177ea41158b9e to your computer and use it in GitHub Desktop.
Save SpacePurr/f92b17b415c176474fd177ea41158b9e to your computer and use it in GitHub Desktop.
Пример работы с библиотекой UsbListener
//Опсиание класса UsbListener
//https://gist.github.com/SpacePurr/c35aa79e8d702b5d639cef05f05f188c
//Основной принцип работы:
// 1. Создание объекта класса UsbListener
// 2. Подписка на эвенты событий подключения/отключения Usb устройств
// 3. Запуск слушателя с помощью метода Start
// 4. Остановка слушателя с помощью метода Stop
//Нюансы:
// Событие OnGetUsbDevices и метод GetUsbDevices сделаны статическими для того,
// чтобы их можно было легко вызвать в любом месте программы
// Порядок действий:
// 1. Подписка на событие
// 2. Вызов команды
// Если инициализировать поле DeviceGuid у объекта UsbListener, то
// делегаты OnInsertDevice и OnDeleteDevice будут фильтроваться по этому Id
using System;
using System.Management;
using System.Threading.Tasks;
namespace TestConsole
{
class Program
{
//deviceguid моего телефона
static readonly string guid = @"USB\VID_12D1&PID_107E&MI_00\6&2A721AC2&1&0000";
static void Main(string[] args)
{
UsbListener.OnGetUsbDevices += UsbListener_OnGetUsbDevices;
UsbListener.GetUSBDevices();
UsbListener listener = new UsbListener
{
DeviceId = guid
};
//я подписал один метод на оба события, но если надо, легко можно разделить
//и подписать разные методы на эти события
listener.OnInsertDevice += Watcher_EventArrived;
listener.OnDeleteDevice += Watcher_EventArrived;
listener.Start();
Console.Read();
listener.Stop();
}
private static void UsbListener_OnGetUsbDevices(ManagementObjectCollection collection)
{
foreach (var device in collection)
{
Console.WriteLine();
Console.WriteLine();
foreach (var prop in device.Properties)
{
if (prop.Value != null)
Console.WriteLine(prop.Name + " : " + prop.Value);
}
}
}
private static void Watcher_EventArrived(object sender, DeviceChangedEventArgs e)
{
Console.WriteLine();
Console.WriteLine();
foreach (var property in e.DeviceManager.Properties)
{
Console.WriteLine(property.Name + " = " + property.Value);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment