Garth J Lancaster
Как минимум, вам понадобится услуга
1) (*возможно*) - со скрытым окном/насосом сообщений, который может использовать RegisterDeviceNotification для обработки сообщения WM_DEVICECHANGE для события DBT_DEVICEARRIVAL
2) (*или*) периодически опрашивайте виртуальные порты/оборудование в поисках сигнатуры устройства
3) а затем -> запустите свою программу
Simples .. теперь все, что вам нужно сделать, это написать код
Возможно, вы захотите посмотреть на следующий код, чтобы увидеть, обнаруживает ли он по крайней мере ваше USB-устройство, когда оно подключено
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Management; // need to add System.Management to your project references.
class Program
{
static void Main(string[] args)
{
var usbDevices = GetUSBDevices();
foreach (var usbDevice in usbDevices)
{
Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
}
Console.Read();
}
static List<USBDeviceInfo> GetUSBDevices()
{
List<USBDeviceInfo> devices = new List<USBDeviceInfo>();
ManagementObjectCollection collection;
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_PnPEntity"))
collection = searcher.Get();
foreach (var device in collection)
{
devices.Add(new USBDeviceInfo(
(string)device.GetPropertyValue("DeviceID"),
(string)device.GetPropertyValue("PNPDeviceID"),
(string)device.GetPropertyValue("Description")
));
}
collection.Dispose();
return devices;
}
}
class USBDeviceInfo
{
public USBDeviceInfo(string deviceID, string pnpDeviceID, string description)
{
this.DeviceID = deviceID;
this.PnpDeviceID = pnpDeviceID;
this.Description = description;
}
public string DeviceID { get; private set; }
public string PnpDeviceID { get; private set; }
public string Description { get; private set; }
}
}
Если это не сработает вам может понадобиться посмотреть на
Библиотека USB для обнаружения USB-устройств[
^] и посмотреть, как он обнаруживает устройства. Есть также
Перечисление и автоматическое определение USB-накопителей[
^] и (более изощренный)
GitHub - MelbourneDeveloper/Device.Net: кроссплатформенный фреймворк подключенных устройств на языке C# [
^] но я бы начал с простого, чтобы посмотреть, сможет ли он найти ваше устройство, это 1/2 битвы.
Как только вы обнаружите, что ваше конкретное устройство действительно существует, вы можете поместить цикл таймера/опроса вокруг кода, чтобы проверять наличие устройства каждую минуту. Это самый простой путь - использование скрытого окна c# довольно продвинуто.
Честно говоря, это немного более продвинутая задача, чем задача для начинающих - хотя с большим количеством чтения и экспериментов вы можете что-то придумать.
Garth J Lancaster
:лицо-ладонь: .. и есть причина, по которой я дал только те заметки, которые сделал.. ладно, спасибо, я посмотрю, как далеко смогу его увести