Maison > développement back-end > C++ > Comment puis-je activer ou désactiver des périphériques par programmation à l'aide de l'API Win32 ?

Comment puis-je activer ou désactiver des périphériques par programmation à l'aide de l'API Win32 ?

Patricia Arquette
Libérer: 2025-01-06 02:50:40
original
365 Les gens l'ont consulté

How Can I Programmatically Enable or Disable Devices Using the Win32 API?

Activation/désactivation programmée des appareils à l'aide de l'API Win32

L'API Windows fournit des fonctionnalités permettant d'activer ou de désactiver des appareils par programme, leur permettant ainsi d'être contrôlés via actions lancées par l’utilisateur ou scripts automatisés. Cet article explorera l'utilisation de l'API Win32 pour obtenir cette capacité de gestion des appareils.

Particules de la désactivation des appareils avec la souris

Alors que l'API Win32 offre une gestion des appareils à usage général capacités, il est important de noter que tous les appareils ne prennent pas en charge la désactivation par programmation. En particulier, le pilote de souris par défaut utilisé dans les ordinateurs portables équipés de pavés tactiles ne prend pas en charge la désactivation via les API SetupDi. Il s'agit probablement d'une considération de conception visant à empêcher la déconnexion accidentelle des périphériques de pointage via une manipulation matérielle.

Utilisation de l'API SetupDi pour la gestion des périphériques

Pour activer ou désactiver un périphérique utilisant Win32, nous utilisons la famille d'API SetupDi, en particulier les fonctions suivantes :

  • SetupDiGetClassDevs : obtient un handle vers un informations sur l'appareil définies pour tous les appareils correspondant à un GUID de classe spécifié.
  • SetupDiEnumDeviceInfo : énumère les appareils dans l'ensemble d'informations sur l'appareil et obtient leurs propriétés.
  • SetupDiGetDeviceInstanceId : récupère l'ID d'instance de l'appareil, un identifiant unique pour l'appareil.
  • SetupDiSetClassInstallParams et SetupDiCallClassInstaller : utilisés pour modifier les propriétés de l'appareil, telles que son activation ou sa désactivation.

Exemple de mise en œuvre

Le code C# suivant montre comment activer ou désactiver un appareil à l'aide de l'option API SetupDi :

    public static void EnableDevice(bool enable)
    {
        // Mouse class GUID
        Guid mouseGuid = new Guid("{4d36e96f-e325-11ce-bfc1-08002be10318}");

        // Instance path of the device (e.g., ACPI\PNP0F03&3688D3F&0)
        string instancePath = @"ACPI\PNP0F03&3688D3F&0";

        DeviceHelper.SetDeviceEnabled(mouseGuid, instancePath, enable);
    }
Copier après la connexion

Supplémentaire Considérations

Lorsque vous utilisez l'API Win32 pour la gestion des appareils, gardez à l'esprit les points suivants :

  • Les énumérations d'appareils peuvent renvoyer plusieurs appareils correspondant au GUID de classe spécifié. Il est essentiel d'identifier la bonne instance d'appareil en fonction de son chemin d'instance ou d'autres propriétés.
  • Les API SetupDi renvoient les propriétés de l'appareil via des structures de données telles que DeviceInfoData. Il est important de comprendre la disposition et l'interprétation de ces structures pour une gestion efficace des appareils.
  • Tous les appareils ne prennent pas en charge la désactivation par programmation. Pour les appareils tels que le pilote de souris par défaut, d'autres méthodes telles que les pilotes de filtre ou WMI peuvent être nécessaires.
  • Lorsque vous ciblez des plates-formes Windows 64 bits, assurez-vous que votre application est conçue comme un processus 64 bits pour éviter d'éventuels problèmes de compatibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal