C#: Obtenir la taille du bureau?
Comment puis-je savoir la taille de l'ensemble du bureau? Pas la "zone de travail" et pas la "résolution d'écran", qui se réfèrent à un seul écran. Je veux savoir le total de la largeur et de la hauteur du bureau virtuel de laquelle chaque moniteur est en ne montrant qu'une partie.
- Peut-être que le "bureau complet taille" dépendra de la façon dont les écrans sont positionnés. Vous ne savez pas comment calculer que, mais vous pouvez toujours attraper le nombre d'écrans et de la résolution de chaque écran avec le Système.De Windows.Les formulaires.De l'écran.AllScreens.
Vous devez vous connecter pour publier un commentaire.
Vous avez deux options:
PresentationFramework.dll
System.Windows.Forms.dll
Utiliser le première option si vous développer une application WPF.
Je pense qu'il est temps d'apporter cette réponse jusqu'à ce jour, avec un peu de LINQ, ce qui le rend facile d'obtenir la totalité de la taille du bureau avec une seule expression.
Ma réponse originale à cette question suit:
Je suppose que ce que vous voulez, c'est quelque chose comme ceci:
Garder à l'esprit que ce n'est pas raconter toute l'histoire. Il est possible pour plusieurs moniteurs à être décalés, ou disposés dans une forme non rectangulaire. Par conséquent, il peut être que la totalité de l'espace entre (minx, miny) et (maxx, maxy) est visible.
EDIT:
Je viens de réaliser que le code pourrait être un peu plus simple à l'aide de
Rectangle.Union
:Vérifier:
Pour obtenir le physique de taille de pixel de l'écran vous pouvez utiliser cette.
Cela ne veut pas répondre à la question, mais simplement ajoute des informations supplémentaires sur une fenêtre du Point (emplacement) dans tous les écrans).
Utiliser le code ci-dessous pour savoir si un Point (par exemple, le dernier Emplacement connu de la fenêtre) est dans les limites de l'ensemble du Bureau. Si pas, réinitialiser la fenêtre de l'Emplacement par défaut pBaseLoc;
Code ne tient pas compte de la barre des tâches ou d'autres Barres d'outils, yer sur yer propre il.
Exemple d'Utilisation: Enregistrer la Fenêtre à l'emplacement d'une base de données à partir de de la station de. Utilisateur se connecte à station B avec 2 moniteurs et déplace la fenêtre vers le 2ème moniteur, les journaux à sauver nouvel emplacement. Retour à de la station de et la fenêtre n'apparaît pas, à moins que le code ci-dessus est utilisé.
Me résoudre mise en œuvre d'enregistrer le nom d'utilisateur et IP de la station (& winLoc) à la base de données d'utilisateurs locaux ou fichiers de préférence pour une application donnée, puis les charger dans user pref pour la station & app.
Vous pouvez utiliser les Limites de
System.Drawing
.Vous pouvez créer une fonction comme ceci
et que vous pouvez obtenir à l'écran un, deux, etc. dans une variable comme ceci:
ensuite, vous pouvez obtenir les limites de l'écran:
Avec ce code, vous obtiendrez toutes les propriétés comme
Width
,Height
, etc.Je pense que la meilleure façon d'obtenir la "vraie" taille de l'écran, c'est d'obtenir directement les valeurs de la vidéo-contrôleur.
Cela devrait faire l'affaire 😉
Salutations ...
Cette méthode retourne le rectangle qui contient tous les écrans' limites en utilisant les valeurs les plus faibles pour en Haut et à Gauche, et les valeurs les plus élevées pour la Droite et en Bas...
Obtenir le Taille d'un affichage virtuel, sans dépendances