Maison >développement back-end >C++ >Les API Win32 peuvent-elles activer ou désactiver par programme tous les appareils ?

Les API Win32 peuvent-elles activer ou désactiver par programme tous les appareils ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-06 02:04:40603parcourir

Can Win32 APIs Programmatically Enable or Disable All Devices?

Contrôle de l'état de l'appareil via l'API Win32

Problème :
Activation ou désactivation des appareils par programmation à l'aide des API Win32.

Discussion :

Pas tous les appareils peuvent être désactivés ou activés via les API SetupDi. Les pilotes de souris par défaut ne prennent pas en charge cette fonctionnalité. Cette limitation résulte de l'impossibilité de détacher à chaud des souris connectées PS/2 sans conséquences matérielles.

Pour vérifier si un appareil peut être désactivé via les API Win32, cochez l'option « Désactiver » dans le Gestionnaire de périphériques. S'il est absent, l'appareil ne peut pas être désactivé de cette façon.

Si l'option Désactiver est présente, suivez ces étapes :

  1. Obtenez le GUID de la classe d'appareil : recherchez-le dans les « Propriétés » du Gestionnaire de périphériques. ".
  2. Obtenir le chemin de l'instance de périphérique : récupérez-le dans les "Propriétés" du Gestionnaire de périphériques. dialogue.
  3. Utilisez le code fourni pour activer ou désactiver l'appareil :
public static void EnableMouse(bool enable)
{
    // mouse class GUID
    Guid mouseGuid = new Guid("{4d36e96f-e325-11ce-bfc1-08002be10318}");
    
    // example instance path: @"\ACPI\PNP0F03&3688D3F&0"
    string instancePath = @"\ACPI\PNP0F03&3688D3F&0";
    
    DeviceHelper.SetDeviceEnabled(mouseGuid, instancePath, enable);
}

Code :

Référez-vous au code fourni dans le DeviceHelper class.

Limitations :

Cette méthode peut échouer pour les appareils qui ne peuvent pas être désactivés via les API SetupDi.

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!

Déclaration:
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