Jump to content

Screen Resolution Conflicts


Recommended Posts

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?

Link to comment
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.

 

Link to comment
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

Link to comment
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
Link to comment
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

Link to comment
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
 Share

  • Recently Browsing   0 members

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