2010-02-08 4 views
10

J'essaie de trouver un moyen de savoir si l'utilisateur utilise plusieurs moniteurs.Comment savoir si l'utilisateur utilise plusieurs moniteurs

Je voudrais savoir comment faire cela en C++ natif (en utilisant l'API Win32) et en code managé (en utilisant le .NET Framework).

Merci à l'avance

+0

une très élégante du code LINQ en C# ici par Rob Fonseca-Ensor qui calculera les limites de tous les écrans actuels utilisés: http://stackoverflow.com/questions/2176648/screen-overlay-for-screenshot/2176683#2176683 – BillW

Répondre

12

Je peux vous donner C# .NET:

if (Screen.AllScreens.Length > 1) 
{ 
    // Multiple monitors 
} 

Edit: Une recherche sur Google se le suivant. Il mentionne 98/ME donc peut-être pas pertinent mais peut vous pointer dans la bonne direction:

Il existe de nouvelles API pour gérer plusieurs moniteurs dans Windows 98. Les API utilisées dans l'exemple de classe Moniteurs sont GetMonitorInfo, MonitorFromWindow et MonitorFromRect. L'API GetSystemMetrics possède de nouvelles constantes (voir ci-dessous) qui peuvent être utilisées pour déterminer les métriques d'un système à plusieurs moniteurs. L'API GetSystemMetrics renvoie des informations sur l'environnement Windows. Cette API peut être utilisée pour déterminer combien de moniteurs sont sur le système, s'ils sont définis au même format d'affichage et la taille du bureau virtuel.

http://support.microsoft.com/kb/194578

+0

Merde, battez-moi! haha –

+0

Lol ya que c'était proche :-) –

+0

Merci. Les deux réponses étaient exactes. J'ai été en mesure d'obtenir le nombre de moniteurs utilisant la fonction GetSystemMetrics passant en argument la constante SM_CMONITORS. – Raphael

6

Dans .NET, il est aussi simple que l'utilisation de la propriété Screen.AllScreens .Length. Pas trop sûr de C++ cependant.

6

GetSystemMetrics avec SM_CMONITORS et vous voilà parti ...

+0

Avait l'impression que c'était 'GetSystemMetrics'. –

+0

En utilisant trois moniteurs sur une base quotidienne, j'avais besoin d'apprendre si vite; –

2

Juste pour documenter ici le C/C++ solution:

int iMonitors = GetSystemMetrics(SM_MONITORS); 
Questions connexes