Démarrage rapide : énumération des conteneurs de périphérique (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Types d’objets Plug and Play (PnP) dans les informations de périphériques du magasin d’énumération PnpObjectType associés à une interface de périphérique particulière, périphérique dont l’interface fait partie, classe d’interfaces de périphérique ou conteneur de périphérique qui représente l’ensemble du produit matériel. Le conteneur de périphérique décrit les aspects visibles d’un périphérique, tels qu’un nom de fabricant ou de modèle. Windows.Devices.Enumeration.DeviceInformation représente le même type que PnpObjectType.DeviceInterface.

L’espace de noms Windows.Devices.Enumeration.PnP vous permet d’énumérer les périphériques et les conteneurs de périphérique, ainsi que les périphériques et les interfaces de périphérique. Cette rubrique vous montre comment utiliser l’espace de noms Windows.Devices.Enumeration.PnP pour énumérer les conteneurs de périphérique.

Objectif: Pour énumérer les propriétés des conteneurs de périphérique.

Prérequis

Vous devez être familiarisé avec JavaScript et HTML.

Durée de réalisation: 20 minutes.

Instructions

1. Ouvrir Microsoft Visual Studio

Ouvrez une instance de Visual Studio.

2. Créer un projet

Dans la boîte de dialogue Nouveau projet, à partir de JavaScript > types de projets applications du Windows Store , cliquez sur Application vide.

3. Insérer l’application HTML

Ouvrez votre fichier Default.html, puis copiez ce code dans le fichier à la place du contenu existant.


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="/js/default.js"></script>
</head>
<body data-design-activate="defaultPage.activated">
    <h1>Device Enumeration Sample</h1>

    <h2 >Input</h2>

    <div>            

       <div id="Input">
         <p>This scenario demonstrates enumerating device containers.</p>
          <p>Pressing the enumerate button will start a
             search for device containers.
             The containers will be listed below.</p>
          <input onclick="onEnumerateDeviceContainers()" type="button" value="Enumerate" />
                <br /><br />
       </div>
    </div>


    <h2> Output</h2>

            <div id="statusMessage"></div>

            <!-- Container Enumeration results are displayed in this element -->
            <div  id="output"></div>
</body>
</html>

4. Insérer le code JavaScript

Dans Default.js, insérez ce code.


function onEnumerateDeviceContainers() {
    try {

        document.getElementById("output").innerHTML = "";

        var propertiesToRetrieve = new Array();
        propertiesToRetrieve.push("System.ItemNameDisplay");
        propertiesToRetrieve.push("System.Devices.ModelName");
        propertiesToRetrieve.push("System.Devices.Manufacturer");

        var DevEnum = Windows.Devices.Enumeration;
        var Pnp = DevEnum.Pnp;
        var pnpObjType = Pnp.PnpObjectType;
        var deviceContainerType = pnpObjType.deviceContainer;

        Pnp.PnpObject.findAllAsync(
            deviceContainerType, 
            propertiesToRetrieve).then(
                function (devinfoCollection) {
                    var numDevices = devinfoCollection.length;
                    document.getElementById("statusMessage").innerHTML = 
                        numDevices + " device containers(s) found";
                    if (numDevices) {
                        for (var i = 0; i < numDevices; i++) {
                            printDeviceContainer(devinfoCollection[i], 
                            document.getElementById("output"));
                        }
                    } else {
                    document.getElementById("statusMessage").innerHTML = 
                        ("No devices found");
                    }
                },
                function (e) {
                    document.getElementById("statusMessage").innerHTML = 
                        ("Failed to find devices, error: " + e.message);
                });
    } catch (e) {
        document.getElementById("statusMessage").innerHTML = 
            ("Failed to enumerate devices, error: " + e.message);
    }
}


function printProperties(log, prop) {
    log.innerHTML += "property store count is: " + prop.size;
    var pt = prop.first();
    while (pt.hasCurrent) {
        log.innerHTML += "<br />" + pt.current.key + " := " + pt.current.value;
        pt.moveNext();
    }
    log.innerHTML += "<br />";
}

function printDeviceContainer(deviceContainer, log) {
    var prop = deviceContainer.properties;
    if (prop) {
        log.innerHTML += "<h3>" + prop.lookup("System.ItemNameDisplay") + "<h3/>";
        log.innerHTML += "<p>Container ID: " + deviceContainer.id + "<p/>";
        printProperties(log, prop);
    }
    log.innerHTML += "<br /><br />";
}

Récapitulatif

Vous venez d’énumérer les propriétés de conteneur de périphérique. Notez que le paramètre requestedProperties pour Windows.Devices.Enumeration.Pnp.findAllAsync est nécessaire pour obtenir les résultats d’une énumération de conteneur permettant de contenir les propriétés.