J'utilise WMI 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> win32_monitordesktop code> pour obtenir toutes les informations sur les moniteurs sur le système.
ManagementObjectSearcher monitorObjectSearch = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor");
foreach (ManagementObject monitor in monitorObjectSearch.Get())
{
Debug.WriteLine(monitor["Description"]);
}
4 Réponses :
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 em> moniteur? Sinon, je continuerai à avoir une idée .. p>
La configuration est deux ordinateurs de bureau différents pas comme un grand moniteur. Je suis sur Vista, 64 et 32.
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. P>
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. P>
J'ai essayé de résoudre ce problème à l'aide de WMI sur de nombreux systèmes (de WinXP-SP3 jusqu'à Win10), et j'ai eu des résultats différents sur différentes machines.
Il existe deux tables, où le réglage de moniteur actuel peut être stocké. Tout d'abord, c'est win32_desktopmonitor em> dans cimv2 em> Espace de noms, seconde est wmimonitoriid em> dans wmi em> espace de noms.
Si l'un d'eux n'a qu'un enregistrement (dans le réglage multi-affichage), la seconde aura toutes les entrées. P>
Ensuite, pour obtenir le nom du pilote du moniteur, il faut trouver des périphériques avec PNPDEviceID trouvés dans les enregistrements de ces tableaux dans win32_pnpentity em> table, dans Espace de noms CIMV2 EM>. Vous pouvez vérifier l'exemple de solution ici . p>
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: sous HKEY_LOCAL_MACHINE CODE> P> P> P> P> P> p>
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)