Pour mon projet C++ actuel, je dois détecter une chaîne unique pour chaque moniteur connecté et actif sur un grand nombre d'ordinateurs.EnumDisplayDevices vs WMI Win32_DesktopMonitor, comment détecter les moniteurs actifs?
La recherche a mis en évidence 2 options
Utilisez WMI et interroger pour tous les moniteurs actifs du Win32_DesktopMonitor. Utilisez le PNPDeviceID pour l'identification unique des moniteurs.
Utilisez l'API EnumDisplayDevices et décompressez pour obtenir l'ID du périphérique.
Je suis intéressé à utiliser l'identifiant de dispositif d'identification de modèle unique parce que les moniteurs en utilisant la prise par défaut et jouer pilote rapportera une chaîne générique comme le nom du moniteur « prise par défaut et-play »
I J'ai eu des problèmes avec la méthode WMI, il semble que je retourne seulement 1 moniteur sur ma machine Vista, en regardant le doco, il s'avère qu'il ne fonctionne pas comme prévu sur les périphériques non WDDM. Le EnumDisplayDevices semble être un peu problématique à démarrer quand il fonctionne à partir d'un service d'arrière-plan (en particulier sur Vista), Si c'est en session 0, il ne renverra aucune information.
A quelqu'un d'autre a dû faire quelque chose de similaire (trouver chaîne de modèle unique pour tous les moniteurs actifs connectés?)
Quelle approche a le mieux fonctionné?
J'ai essayé d'implémenter votre code. J'obtiens une erreur 'Identifiant DeviceID is undefined' J'ai essayé de rechercher sur msdn un include approprié mais je n'ai pas trouvé de paramètre DeviceID séparé. Pouvez-vous s'il vous plaît me dire quel fichier d'en-tête à inclure pour DeviceID à identifier. – newbie2015