2009-10-06 8 views
1

Existe-t-il un moyen d'obtenir TOUTES les résolutions valides pour un écran donné?Liste des résolutions valides pour un écran donné?

J'ai actuellement un menu déroulant qui est rempli avec tous les écrans valides (en utilisant Screen.AllScreens). Lorsque l'utilisateur sélectionne un écran, je voudrais les présenter avec une seconde liste déroulante liste toutes les résolutions valides pour cet affichage (pas juste la résolution actuelle).

Répondre

1

Je pense qu'il devrait être possible d'obtenir l'information à l'aide Windows Management Instrumentation (WMI). WMI est accessible à partir de .NET en utilisant les classes de leur espace de noms System.Management.

Une solution ressemblera à ce qui suit. Je ne connais pas bien WMI et je n'ai pas pu trouver immédiatement l'information que vous recherchez, mais j'ai trouvé la classe WMI pour les résolutions supportées par la carte vidéo. Le code nécessite de référencer System.Management.dll et d'importer l'espace de noms System.Management.

var scope = new ManagementScope(); 

var query = new ObjectQuery("SELECT * FROM CIM_VideoControllerResolution"); 

using (var searcher = new ManagementObjectSearcher(scope, query)) 
{ 
    var results = searcher.Get(); 

    foreach (var result in results) 
    { 
     Console.WriteLine(
      "caption={0}, description={1} resolution={2}x{3} " + 
      "colors={4} refresh rate={5}|{6}|{7} scan mode={8}", 
      result["Caption"], result["Description"], 
      result["HorizontalResolution"], 
      result["VerticalResolution"], 
      result["NumberOfColors"], 
      result["MinRefreshRate"], 
      result["RefreshRate"], 
      result["MaxRefreshRate"], 
      result["ScanMode"]); 
    } 
} 
+0

Merci pour la réponse Daniel. J'ai lutté avec cela pendant un certain temps maintenant. Avec votre réponse ci-dessus, je ne vois pas comment cela se rapporte à des écrans individuels. Avec ma configuration double affichage, ma carte vidéo peut prendre en charge jusqu'à 1900x1200, mais mon moniteur connecté a un maximum de 1280x1024. Je ne vois pas comment interroger les résolutions pour les affichages individuels ... – aantix

+0

Vous devrez faire une recherche parmi les classes WMI disponibles ... Je suis assez confiant qu'il existe une classe fournissant l'information que vous recherchez. Allez sur http://msdn.microsoft.com/en-us/library/aa394554(VS.85).aspx et recherchez dans les classes. –

+0

@ DanielBrückner: Comment faire pour que ce code fonctionne avec Windows 8? –

0

La réponse acceptée ne semble pas fonctionner sur Windows 8.1, au moins sur ma machine. La requête fonctionne bien, mais il y a 0 entrées dans les résultats. Et compte tenu du commentaire de Bijoy K Jose, je suppose que je ne suis pas le seul.

Cependant la réponse validée pour la question suivante a été très bien: How to list available video modes using C#?

Merci à Vimvq1987

Questions connexes