ahha 4 Posted April 16, 2010 Okay I've scanned the boards (may have missed it) and looked as best I can at the dll's for a clue. Here's a program that is little more than @DesktopWidth and @DesktopHeight making some DLL calls for the virtual screen but I can't seem to find how to find the screen resolution for a 2nd or 3rd monitor. Any hints greatly appreciated. expandcollapse popup; use this to debug in console window <--- LOOK ;#AutoIt3Wrapper_run_debug_mode=Y ;author: ahha ;filename: determine screen sizes v1b.au3 ;http://msdn.microsoft.com/en-us/library/ms724385%28VS.85%29.aspx $VirtX = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 78) ;SM_CXVIRTUALSCREEN 78 ;The width of the virtual screen, in pixels. The virtual screen is the bounding rectangle of all display monitors. ;The SM_XVIRTUALSCREEN metric is the coordinates for the left side of the virtual screen. $VirtY = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 79) ;SM_CYVIRTUALSCREEN 79 ;The height of the virtual screen, in pixels. The virtual screen is the bounding rectangle of all display monitors. ;The SM_YVIRTUALSCREEN metric is the coordinates for the top of the virtual screen. $Mons = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 80) ;SM_CMONITORS 80 ;The number of display monitors on a desktop. For more information, see the Remarks section in this topic. ;Remarks ;System metrics can vary from display to display. ;GetSystemMetrics(SM_CMONITORS) counts only visible display monitors. This is different from EnumDisplayMonitors, which enumerates both visible display monitors and invisible pseudo-monitors that are associated with mirroring drivers. An invisible pseudo-monitor is associated with a pseudo-device used to mirror application drawing for remoting or other purposes. $LSVS = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 76) ;SM_XVIRTUALSCREEN 76 ;The coordinates for the left side of the virtual screen. The virtual screen is the bounding rectangle of all display monitors. ;The SM_CXVIRTUALSCREEN metric is the width of the virtual screen. $TSVS = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 77) ;SM_YVIRTUALSCREEN77 ;The coordinates for the top of the virtual screen. The virtual screen is the bounding rectangle of all display monitors. ;The SM_CYVIRTUALSCREEN metric is the height of the virtual screen. $PriDispX = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 0) ;SM_CXSCREEN 0 ;The width of the screen of the primary display monitor, in pixels. ;This is the same value obtained by calling GetDeviceCaps as follows: GetDeviceCaps( hdcPrimaryMonitor, HORZRES). $PriDispY = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 1) ;SM_CYSCREEN 1 ;The height of the screen of the primary display monitor, in pixels. ;This is the same value obtained by calling GetDeviceCaps as follows: GetDeviceCaps( hdcPrimaryMonitor, VERTRES). $mz = "SM_CXSCREEN = "&$PriDispX[0] &" SM_CYSCREEN = "&$PriDispY[0] $m0 = "@DesktopWidth = "&@DesktopWidth &" @DesktopHeight = "&@DesktopHeight $m1 = "Number of visible screen monitors: " & $Mons[0] $m2 = "Maximum size of 'virtual screen' : " & $VirtX[0] &"x"& $VirtY[0] $m3 = "Full 'virtual screen' coordinates: " & $LSVS[0] &"," & $TSVS[0] &" to "& $VirtX[0] &","& $VirtY[0] MsgBox(0+262144, "Status of determine screen sizes", $mz &@CRLF& $m0 &@CRLF& $m1 &@CRLF& $m2 &@CRLF& $m3) Share this post Link to post Share on other sites
PsaltyDS 39 Posted April 16, 2010 Do some more searching. I know there have been scripts posted that enumerate multiple monitors and get/set parameters for them. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Share this post Link to post Share on other sites
ahha 4 Posted April 16, 2010 Thanks. Searching with "enumerate" brought up several however they appear to either bring up registry entries or query the monitor directly for serial number, etc. Still don't see resolution. I'll keep looking. Found WMI call for resolution but not setting it (http://www.autoitscript.com/forum/index.php?showtopic=82353&st=0&p=590685&#entry590685). Will keep looking later. Need to work now Do some more searching. I know there have been scripts posted that enumerate multiple monitors and get/set parameters for them. Share this post Link to post Share on other sites
kaotkbliss 146 Posted April 16, 2010 The attached UDF can change the resolution of multiple monitors and at one point I know I modified it to querry for the primary monitor so it shouldn't be hard to modify it for your neeeds 010101000110100001101001011100110010000001101001011100110010000001101101011110010010000001110011011010010110011100100001My Android cat and mouse gamehttps://play.google.com/store/apps/details?id=com.KaosVisions.WhiskersNSqueekWe're gonna need another Timmy! Share this post Link to post Share on other sites
ahha 4 Posted April 16, 2010 Thanks - will give it a try later. Share this post Link to post Share on other sites
ahha 4 Posted April 17, 2010 (edited) Very nice routine.The EnumDisplaySettings was the key. For others info is here: http://msdn.microsoft.com/en-us/library/dd162611%28VS.85%29.aspxAlso EnumDisplayDevices here: http://msdn.microsoft.com/en-us/library/dd162609%28v=VS.85%29.aspxThanks.Also found routine here by xrxca that works well: http://www.autoitscript.com/forum/index.php?showtopic=82353&st=0&p=590685&#entry590685Thanks - will give it a try later. Edited April 17, 2010 by ahha Share this post Link to post Share on other sites