-
-
Save SpacePurr/f92b17b415c176474fd177ea41158b9e to your computer and use it in GitHub Desktop.
Пример работы с библиотекой UsbListener
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Опсиание класса 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