Sign in to follow this  
Followers 0
Paulie

Screen Resolution Conflicts

6 posts in this topic

I Am writing an installer program that can install an application on many Desktops and laptops, problem is, there is a whole series of screen resolution differences messing up my mouseclicks, and the installer is crappy so no controlclicks work

Is there a way to have autoit set the screen resolution, so i can make one standard that i can use on all comps?

Share this post


Link to post
Share on other sites



Here's what I use so I don't have to worry about screen res.

Func _MouseClick($TITLE, $TEXT, $CONTROLID)
   Local $MouseCoordModeBAK = AutoItSetOption("MouseCoordMode", 2)
   Local $POS = ControlGetPos($TITLE, $TEXT, $CONTROLID)
   MouseMove($POS[0] + 10, $POS[1] + 10, 4)
   MouseDown("left")
   Sleep(500)
   MouseUp("left")
   AutoItSetOption("MouseCoordMode", $MouseCoordModeBAK)
EndFunc   ;==>_MouseClick

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

If you are writing the installer, then why is it so crappy? Are you using a 3rd party installer or an Au3 script to install?

Share this post


Link to post
Share on other sites

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Share this post


Link to post
Share on other sites

Use this script. I use it to change the resolution to what I want. Works great!

#include-once
;===============================================================================
;
; 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):         [url="http://www.autoitscript.com/forum/index.php?showtopic=20121"]http://www.autoitscript.com/forum/index.php?showtopic=20121[/url]
; Author(s):        Original code - psandu.ro
;                   Modifications - PartyPooper
;
;===============================================================================

;-------------------------------------------------------------------------------
#cs - example
#include <ChangeResolution.au3>

$iWidth = 1024
$iHeight = 768
$iBitsPP = 32
$iRefreshRate = 60

$vRes = _ChangeScreenRes($iWidth, $iHeight, $iBitsPP, $iRefreshRate)
If @error Then
    MsgBox(262160, "ERROR", "Unable to change screen - check parameters")
EndIf
;-------------------
Format for the UDF is as follows:
#include <ChangeResolution.au3>
_ChangeScreenRes( [Width [, Height [, BitsPerPixel [, RefreshRate]]]] )
#ce
;------------------------------------------------------------------------------------


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

Share this post


Link to post
Share on other sites

If you are writing the installer, then why is it so crappy? Are you using a 3rd party installer or an Au3 script to install?

I am using Autoit to run through an installer for a 3rd party program

and that program is crappy because it has messages in messages and stuff like that, and the interface is poor quality

@vollyman & gafrost

Both scripts work, thanks :D

Share this post


Link to post
Share on other sites

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
Sign in to follow this  
Followers 0