Jump to content

Recommended Posts

Posted

How would I go about fetching the resolution of a 2nd or 3rd monitor?

Is there a specific function for this?

  Reveal hidden contents

 

Posted

I don't know if this will help or not.

_WinAPI_GetSystemMetrics(78); Width (X)
_WinAPI_GetSystemMetrics(79); Height (y)

The code will display the height/width of the virtual screen, in pixels. The virtual screen is the bounding rectangle of all display monitors.

Got this info from MSDN @: http://msdn.microsoft.com/en-us/library/ms724385.aspx

Posted
might give you an insight into how to achieve this.

UDF List:

  Reveal hidden contents

Updated: 22/04/2018

Posted (edited)

Use this Function that I created to get information on all the displays.

; #FUNCTION# ====================================================================================================================
; Name...........: _Get_MonitorsInformation
; Description....: Gets details of all the Displays.
; Syntax.........: _Get_MonitorsInformation()
; Parameters.....: None
; Return values..: The array returned is 8 dimensional and is made up as follows:
;      Success  ====>
;      $array[0][0] = The number of displays on the computer
;      $array[0][1] = The Error code returned by MIService Object
;
;      $array[1][0] = Name
;      $array[1][1] = Monitor Type
;      $array[1][2] = Manfucturer
;      $array[1][3] = DPI X
;      $array[1][4] = DPI Y
;      $array[1][5] = Screen Width
;      $array[1][6] = Screen Height
;      $array[1][7] = Display Type
;                 Failure  ====>
;      $array[0][0] = 0
;      $array[0][1] = The Error code returned by MIService Object
; Author.........: Antonio Do Rosario (Aipion)
; Remarks........: Works with Windows 2000, 2003, XP, Vista and 7
; Example........: No
; ===============================================================================================================================
Func _Get_MonitorsInformation()
  
   Local $objWMIService ; As Object
   Local $colItems  ; As Object
   Local $objItem  ; As Object
   Local $DisplaysArray[1][8]
  
   Local $objWMIService = ObjGet("winmgmts:.rootcimv2")
   $DisplaysArray[0][1] = Hex(@error, 8)
   If @error Then
   ;Error Getting an active WMIService Object.
   $DisplaysArray[0][0] = 0
   Return $DisplaysArray
   EndIf
  
   $colItems = $objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
  
   For $objItem In $colItems
   $DisplaysArray[0][0] += 1
   ReDim $DisplaysArray[$DisplaysArray[0][0]+1][8]
  
   $DisplaysArray[$DisplaysArray[0][0]][0] = $objItem.Name      ;Name
   $DisplaysArray[$DisplaysArray[0][0]][1] = $objItem.MonitorType     ;Monitor Type
   $DisplaysArray[$DisplaysArray[0][0]][2] = $objItem.MonitorManufacturer   ;Manufacturer
   $DisplaysArray[$DisplaysArray[0][0]][3] = $objItem.PixelsPerXLogicalInch ;DPI X
   $DisplaysArray[$DisplaysArray[0][0]][4] = $objItem.PixelsPerYLogicalInch ;DPI Y
   $DisplaysArray[$DisplaysArray[0][0]][5] = $objItem.ScreenWidth     ;Screen Width
   $DisplaysArray[$DisplaysArray[0][0]][6] = $objItem.ScreenHeight    ;Screen Height
  
   ;Display Type
   Switch $objItem.DisplayType
   Case 0
   $DisplaysArray[$DisplaysArray[0][0]][7] = "Unknown"
   Case 1
   $DisplaysArray[$DisplaysArray[0][0]][7] = "Other"
   Case 2
   $DisplaysArray[$DisplaysArray[0][0]][7] = "MultiScan Color"
   Case 3
   $DisplaysArray[$DisplaysArray[0][0]][7] = "MultiScan Monochrome"
   Case 4
   $DisplaysArray[$DisplaysArray[0][0]][7] = "Fixed Frequency Color"
   Case 5
   $DisplaysArray[$DisplaysArray[0][0]][7] = "Fixed Frequency Monochrome"
   Case Else
   $DisplaysArray[$DisplaysArray[0][0]][7] = "Unknown"
   EndSwitch
   Next
   Return $DisplaysArray
EndFunc
Edited by Guest

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...