9
votes

WMI obtient tous les moniteurs ne pas retourner tous les moniteurs

J'utilise WMI win32_monitordesktop code> pour obtenir toutes les informations sur les moniteurs sur le système.

Cependant, il ne renvoie qu'un seul. Je l'ai essayé sur plusieurs ordinateurs, et ils ont certainement plusieurs moniteurs sur eux, connectés et travailleuses. P>

ManagementObjectSearcher monitorObjectSearch = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor");

foreach (ManagementObject monitor in monitorObjectSearch.Get())
{
      Debug.WriteLine(monitor["Description"]);
}


6 commentaires

En commençant par Windows Vista, le matériel qui n'est pas compatible avec le modèle de pilote d'affichage de Windows (WDDM) renvoie des valeurs de propriété inexactes pour des instances de cette classe. (De MSDN.MicRosoft.com/en-us/Library /AA394122(vs.85).aspx )


Cela dit qu'il retournera des valeurs de propriété inexactes, les valeurs que je reçois pour le moniteur unique sont correctes. Je n'ai que 1 moniteur.


Lorsque vous utilisez Screen.Alcreens, j'ai 2 dans le tableau, mais je ne peux pas obtenir le nom "Nice" du moniteur d'ici.


À la maison maintenant. Je peux confirmer cette erreur. Lors de la vérification de CIM_LogicalDevice, je vois deux moniteurs comme Win32_PnPentity, mais un seul d'entre eux est de type win32_desktopmonitor. (Vista, 64 bits.)


Avez-vous déjà trouvé une solution / solution de contournement? Je cours dans le même problème.


J'ai toujours le même problème, exécutant Windows 7 64bit, toutes les solutions? Je suis à partir d'un service et d'écran de débogage.L'allscreens obtient 2, mais en version 1. (WMI a le même problème pour moi)


4 Réponses :


1
votes

Il est possible que les moniteurs soient configurés en mode intervalle horizontal (cartes NV et ATI) qui apportent efficacement plusieurs configurations de moniteur dans un grand moniteur? Sinon, je continuerai à avoir une idée ..

Aussi le MSDN énormément spécifiquement Si cet appel WMI est utilisé avec quelque chose de pré-vista, il donnera des résultats inexacts!


1 commentaires

La configuration est deux ordinateurs de bureau différents pas comme un grand moniteur. Je suis sur Vista, 64 et 32.



0
votes

J'utilise le même code de WMI (Win32_Desktopmonitor) sur une machine Windows 7. Il ne reste pas de travail là aussi, dans le sens où seulement 1 moniteur est retourné, où il y a vraiment deux.

Agirez également l'écran.Allscreens.length, ne renvoie que 1 moniteur. Le seul moyen d'obtenir le système de retourner 2 moniteurs est d'étendre le bureau aux deux moniteurs, mais ce n'est pas ce que la plupart des gens font.


0 commentaires


0
votes

Ceci ne répond certainement pas à votre question actuelle, mais la manière la plus fiable de déterminer les informations du moniteur consiste à lire après le registre: xxx

sous HKEY_LOCAL_MACHINE


0 commentaires