Dirk98 Posted December 10, 2007 Share Posted December 10, 2007 Guys, I have a script in the autostart that launches everything I need, but it works only at 1024x768 resolution of the desktop. Do you know a code that can check and change resolution of the desktop if it is different from 1024x768? Thanks. Link to comment Share on other sites More sharing options...
Nahuel Posted December 10, 2007 Share Posted December 10, 2007 http://www.autoitscript.com/forum/index.ph...ange+resolution Link to comment Share on other sites More sharing options...
themax90 Posted December 10, 2007 Share Posted December 10, 2007 Look at the Macros @DesktopWidth, @DesktopHeight, and @DesktopDepth. As for the changing of resolution I will let you ponder a tad bit more. Check the help file for further definitions of these macros. Or run this script. MsgBox(0, "@Desktop Info", "@DesktopWidth = " & @DesktopWidth & @CRLF & "@DesktopHeight = " & @DesktopHeight & @CRLF & "@DesktopDepth = " & @DesktopDepth) Use them like a variable - except instead of using $ use @ as the prefix. ~Smith Link to comment Share on other sites More sharing options...
Dirk98 Posted December 10, 2007 Author Share Posted December 10, 2007 Cool, thanks, guys. Wouldn't think it was so big. Dirk. Link to comment Share on other sites More sharing options...
ktuimala Posted December 10, 2007 Share Posted December 10, 2007 I found this function a long time ago on the forum. I use it to change resolutions when they are not what is required or needed. A crude implementation of it is below. This should take care of your issue. expandcollapse popupIf @DesktopHeight <> 1024 And @DesktopWidth <> 768 Then Local $w = 1024 Local $h = 768 Local $c = 32 Local $r = 60 _ChangeScreenRes($w, $h, $c, $r) EndIf ;=============================================================================== ; ; Function Name: _ChangeScreenRes() ; Description: Changes the current screen geometry, colour and refresh rate. ; Version: 1.0.0.1 ; Parameter(s): $i_Width - Width of the desktop screen in pixels. (horizontal resolution) ; $i_Height - Height of the desktop screen in pixels. (vertical resolution) ; $i_BitsPP - Depth of the desktop screen in bits per pixel. ; $i_RefreshRate - Refresh rate of the desktop screen in hertz. ; Requirement(s): AutoIt Beta > 3.1 ; Return Value(s): On Success - Screen is adjusted, @ERROR = 0 ; On Failure - sets @ERROR = 1 ; Forum(s): http://www.autoitscript.com/forum/index.php?showtopic=20121 ; Author(s): Original code - psandu.ro ; Modifications - PartyPooper ; ;=============================================================================== Func _ChangeScreenRes($i_Width = @DesktopWidth, $i_Height = @DesktopHeight, $i_BitsPP = @DesktopDepth, $i_RefreshRate = @DesktopRefresh) Local Const $DM_PELSWIDTH = 0x00080000 Local Const $DM_PELSHEIGHT = 0x00100000 Local Const $DM_BITSPERPEL = 0x00040000 Local Const $DM_DISPLAYFREQUENCY = 0x00400000 Local Const $CDS_TEST = 0x00000002 Local Const $CDS_UPDATEREGISTRY = 0x00000001 Local Const $DISP_CHANGE_RESTART = 1 Local Const $DISP_CHANGE_SUCCESSFUL = 0 Local Const $HWND_BROADCAST = 0xffff Local Const $WM_DISPLAYCHANGE = 0x007E If $i_Width = "" Or $i_Width = -1 Then $i_Width = @DesktopWidth ; default to current setting If $i_Height = "" Or $i_Height = -1 Then $i_Height = @DesktopHeight ; default to current setting If $i_BitsPP = "" Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth ; default to current setting If $i_RefreshRate = "" Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh ; default to current setting Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]") Local $B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DllStructGetPtr($DEVMODE)) If @error Then $B = 0 SetError(1) Return $B Else $B = $B[0] EndIf If $B <> 0 Then DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5) DllStructSetData($DEVMODE, 4, $i_Width, 2) DllStructSetData($DEVMODE, 4, $i_Height, 3) DllStructSetData($DEVMODE, 4, $i_BitsPP, 1) DllStructSetData($DEVMODE, 4, $i_RefreshRate, 5) $B = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST) If @error Then $B = -1 Else $B = $B[0] EndIf Select Case $B = $DISP_CHANGE_RESTART $DEVMODE = "" Return 2 Case $B = $DISP_CHANGE_SUCCESSFUL DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY) DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _ "int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width) $DEVMODE = "" Return 1 Case Else $DEVMODE = "" SetError(1) Return $B EndSelect EndIf EndFunc ;==>_ChangeScreenRes Link to comment Share on other sites More sharing options...
Nahuel Posted December 10, 2007 Share Posted December 10, 2007 I found this function a long time ago on the forum. I use it to change resolutions when they are not what is required or needed. A crude implementation of it is below. This should take care of your issue.You should have should clicked the link I posted. Link to comment Share on other sites More sharing options...
Hermano Posted December 10, 2007 Share Posted December 10, 2007 By tonight you will have a full multi-monitor library available (if i manage to complete the fist beta) You will so able to change resolution on a temporary mode without rewriting all the times the registry. wait and see ------- CARPE DIEM Display_Library_ Skype erase history Win10VirtualDesktopManager Link to comment Share on other sites More sharing options...
Dirk98 Posted December 10, 2007 Author Share Posted December 10, 2007 (edited) Wow, guys, thank you very much. Nahuel, I'm using Volley's code from that thread because he gave it with a concrete example. It is similar to what ktuimala posted, but I guess was still based on your code you posted in that thread. Thanks again, can be very useful. Edited December 10, 2007 by Dirk98 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now