На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Что такое WPD


В одном своем заказе я столкнулся с проблемой. Необходимо было написать для одной программы проводник по подключаемым устройствам на C#. Проблема заключалась в том, что FolderBrowserDialog вообще не собирался работать с теми устройствами, у которых отсутствовала буква диска, а BrowseForFolder не мог работать с папками на таких устройствах, путь к которым превышал 260 символов. Ну что ж, напишем его сами. Для этого мы воспользуемся WDP.

Windows Portable Devices (WPD) позволяет компьютерам взаимодействовать с подключенными внешними устройствами. WPD обеспечивает гибкий и надежный способ взаимодействия компьютеров с музыкальными проигрывателями, флешками, мобильными телефонами, камерами и многими другими типами подключенных устройств.

Приложения, созданные на WPD, могут исследовать устройство, отправлять и получать контент и даже управлять устройством, например, делать снимок или отправлять текстовое сообщение. Система спроектирована так, чтобы быть гибкой, чтобы можно было исследовать многие типы устройств и расширять их, чтобы разработчики драйверов могли определять пользовательские свойства и команды для пользовательских устройств.

Вы можете писать как приложения Windows, так и веб-приложения с помощью WPD. Вы используете интерфейс программирования приложений WPD для создания приложений Windows. Эти приложения могут быть написаны на C ++, C # .Net или Visual Basic .Net. Интерфейс программирования WPD поддерживается в операционных системах Windows 7, Windows Vista и Windows XP. WPD Automation Object Model поддерживается только в Windows 7.

В этой статье мы научимся получать список подключенных устройств их id.

Настройка проекта

Запустите Visual Studio и создайте новое пустое решение именем с wpd. Далее добавьте новое консольное приложение под названием PortableDevices к нему. Чтобы получить доступ к wdp по API, вам нужно добавить ссылки на библиотеки COM “PortableDeviceApi 1.0 Type Library″ и “PortableDeviceTypes 1.0 Type Library”.



Затем выделите обе ссылки и измените свойство “Внедрить типы взаимодействия” на false. Теперь мы готовы, чтобы начать работать с wdp по API-интерфейсу.

Перечисление wpd-устройств

Добавьте новый класс в проект под названием PortableDeviceCollection. Этот класс представляет собой простую коллекция, которая отслеживает PortableDevice экземпляры. Когда экземпляр класса PortableDeviceCollection создается, то его конструктор создает экземпляр типа PortableDeviceManager, который может быть найден в библиотеке Тип PortableDeviceApi 1.0.

public class PortableDeviceCollection : Collection<PortableDevice>
{
    private readonly PortableDeviceManager _deviceManager;

    public PortableDeviceCollection()
    {
        this._deviceManager = new PortableDeviceManager();
    }

    public void Refresh()
    {
        //...
    }
}
Идем дальше и добавляем класс PortableDevice к проекту. Мы передаем идентификатор устройства при создании нового экземпляра этого класса.

public class PortableDevice
{
    public PortableDevice(string deviceId)
    {
        this.DeviceId = deviceId;
    }

    public string DeviceId { get; set; }
}
Давайте создадим коллекцию файлов wpd-совместимых устройств путем реализации метода Refresh() класса PortableDeviceCollection.

public void Refresh()
{
    this._deviceManager.RefreshDeviceList();

    // Определяем, сколько wpd-устройства подключено
    var deviceIds = new string[1];
    uint count = 1;
    this._deviceManager.GetDevices(ref deviceIds[0], ref count);

    // Получаем идентификатор для каждого подключенного устройства
    deviceIds = new string[count];
    this._deviceManager.GetDevices(ref deviceIds[0], ref count);
    foreach(var deviceId in deviceIds)
    {
        Add(new PortableDevice(deviceId));
    }
}
Мы поручаем PortableDeviceManager подсчитать, сколько устройств подключено к ПК. Далее мы получаем ИД устройства для каждого подключенного устройства, и добавляем новый экземпляр класса PortableDevice в коллекцию.

Добавьте следующий код в основной метод консольного приложения и нажмите клавишу F5 для запуска приложения:

var collection = new PortableDeviceCollection();

collection.Refresh();

foreach(var device in collection)
{
    Console.WriteLine(device.DeviceId);
}

Console.WriteLine();
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
Вы увидите примерно следующее:



Это какой-то идентификатор устройства - в данном случае это мой мобильный телефон. Продолжение следует...




тегистатьи IT, си шарп, внешние устройства, WPD





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Магия закончилась: часть 2
Как увеличить работоспособность мозга: простые советы


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.