2010-11-08 21 views
19

Ich muss die Bildschirmauflösung mit meiner Anwendung ändern.Bildschirmauflösung abrufen

Gewusst wie:

  1. aktuelle Auflösung Lesen
  2. Ändern es meine Anwendung verwenden und dann zu Strom an der Ausfahrt zurück.

Danke, Furqan

Antwort

26

1) Wie lese ich die aktuelle Bildschirmauflösung ?

Die aktuelle Bildschirmauflösung zu erhalten ist einfach und in das Framework integriert, ohne dass man sich in etwas wie die GetSystemMetrics API vertiefen muss. Die Klasse Screen enthält Informationen über alle an das System angeschlossenen Anzeigegeräte. So um die Auflösung des primären Monitors, um zu bestimmen, könnten Sie so etwas wie verwenden:

Dim screenWidth as Integer = Screen.PrimaryScreen.Bounds.Width 
Dim screenHeight as Integer = Screen.PrimaryScreen.Bounds.Height 

mit mehreren Monitoren beschäftigen, schauen Sie in die Screen.AllScreens Eigenschaft, die gibt ein Array von Screen Objekte zu jedem der Displays entsprechend an das System. Sie könnten dann (unter Verwendung des obigen Codes) die Auflösung jedes der an den Computer angeschlossenen Displays bestimmen, indem Sie das Array von Screen Objekten durchlaufen.

2) Wie ändere ich die aktuelle Bildschirmauflösung von meiner VB.NET-Anwendung?

Das Ändern der Bildschirmauflösung ist etwas schwieriger. Bevor Sie weiter gehen, würde ich Sie warnen, dass eine Anwendung, die die Bildschirmauflösung des Benutzers anpasst, unerwartet und möglicherweise creates a hostile user environment ist. Ich weiß, dass ich keine Anwendung verwenden würde, die meine Bildschirmauflösung ohne Erlaubnis änderte, und ich würde lange und intensiv darüber nachdenken, eine zu verwenden, die mich überhaupt dazu auffordert. Wenn Sie versuchen, einen Bildschirmschoner zu erstellen, gibt es wahrscheinlich einen besseren und einfacheren Weg, um das zu tun, was Sie wollen. Davon abgesehen, kann es von VB.NET aus durchgeführt werden, wenn Sie einige Funktionen der Windows-API aufrufen/aufrufen möchten.

Die einfachste Möglichkeit, wenn Sie nur den Fall eines einzelnen Monitors betreffen, ist die ChangeDisplaySettings-Funktion, mit der Sie den Grafikmodus der Standardanzeige festlegen können (nur der primäre Monitor des Benutzers).

Um mit mehreren Monitoren arbeiten zu können, müssen Sie die Funktion EnumDisplayDevices verwenden, um Informationen zu allen an den Computer angeschlossenen Anzeigegeräten abzurufen, und ChangeDisplaySettingsEx, um einen bestimmten Bildschirm zu ändern.

Auschecken pinvoke.net für wie die Signaturen der Windows-API-Aufrufe in VB.NET deklarieren. Eine Google-Suche ergab this thread, obwohl ich den von ihnen bereitgestellten Beispielcode nicht verifiziert habe.

Um die Bildschirmauflösung nur während der Ausführung der App zu ändern und sie beim Beenden des Programms wiederherzustellen, sollten Sie die aktuellen Bildschirmeinstellungen speichern, bevor Sie sie ändern und dann wiederherstellen (mit derselben Methode) Anrufe), wenn Ihre Anwendung beendet wird.

+5

+1 ... eine Anwendung hat kein Geschäft meine Bildschirmauflösung zu ändern! Selbst Spiele (gewohnt?) Vermasseln das komplett. –

4

Wie aktuelle Bildschirmauflösung

Public Function ScreenResolution() As String 
     Dim intX As Integer = Screen.PrimaryScreen.Bounds.Width 
     Dim intY As Integer = Screen.PrimaryScreen.Bounds.Height 
     Return intX & " × " & intY 
End Function 

bekommen Wie aktuelle Bildschirmauflösung ändern - solution