1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Jescho

Beiträge von Jescho

  • Problem mit der Monitoranordnung nach Auflösungsänderung

    • Jescho
    • 17. Januar 2010 um 03:23

    Hallo alle miteinander,

    ich möchte gerne ein Tool erstellen, wo man bei 4 Monitore die Auflösung ändert. Bis jetzt bin ich soweit, dass er die Aüflösung ändert, jedoch wird die Anordnung der Monitore so zerstückelt, das man mit der Maus nicht mehr zwischen den Monitoren wechseln kann. Nur in den Bereichen wo die Monitore sich berrührern kann man mit die Maus rüberziehen. Ich habe mal zwei Bilder sowie meinen bisherigen Code zum Verständniss angefühgt. Ich denke mal das mann die Position der Monitore auch übergeben kann, aber wo?

    Grüße

    [autoit]

    #include-once

    [/autoit][autoit][/autoit][autoit]

    ;~ #cs ; 1024x768
    _ChangeScreenResEx(4,1024,768,32)
    Sleep(100)
    _ChangeScreenResEx(3,1024,768,32)
    Sleep(100)
    _ChangeScreenResEx(2,1024,768,32)
    Sleep(100)
    _ChangeScreenResEx(1,1024,768,32)
    ;~ #ce ; 1280*1024

    [/autoit][autoit][/autoit][autoit]

    #cs ; 1280x1024
    _ChangeScreenResEx(1,1280,1024,32)
    Sleep(100)
    _ChangeScreenResEx(3,1280,1024,32)
    Sleep(100)
    _ChangeScreenResEx(2,1280,1024,32)
    Sleep(100)
    _ChangeScreenResEx(4,1280,1024,32)
    #ce ; 1280x1024

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;===============================================================================
    ; Function Name: _ChangeScreenResEx()
    ; Description: Changes the current screen geometry, colour and refresh rate.
    ; Version: 1.0.0.0
    ; Parameter(s): $i_DisplayNum - Display to change, starting at 1
    ; $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):
    ; Author(s): Original code - psandu.ro, PartyPooper
    ; Modifications - bobchernow
    ;===============================================================================
    Func _ChangeScreenResEx($i_DisplayNum = 1, $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 $s_Display

    [/autoit][autoit][/autoit][autoit]

    $s_Display = "\\.\Display" & $i_DisplayNum

    [/autoit][autoit][/autoit][autoit]

    Local $B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "int", 0, "ptr", DllStructGetPtr($DEVMODE))

    [/autoit][autoit][/autoit][autoit]

    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)

    [/autoit][autoit][/autoit][autoit]

    $B = DllCall("user32.dll", "int", "ChangeDisplaySettingsEx","str", $s_Display, "ptr", DllStructGetPtr($DEVMODE), "hwnd", 0, "dword", $CDS_TEST, "lparam", 0)
    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", "ChangeDisplaySettingsEx","str", $s_Display, "ptr", DllStructGetPtr($DEVMODE), "hwnd", 0, "dword", $CDS_UPDATEREGISTRY, "lparam", 0)
    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;==>_ChangeScreenResEx

    [/autoit]

    [Blockierte Grafik: d:%5CUsers%5CJensSchollmeier%5CPictures%5CAnzeigeeinstellungen_falsch] 
    [Blockierte Grafik: d:%5CUsers%5CJensSchollmeier%5CPictures%5CAnzeigeeinstellungen_richtig]

  • Problem mit GUISetState

    • Jescho
    • 24. November 2009 um 21:54

    Danke :rock: funktioniert tadellos

    ja ich habe so etwas schon vermutet. Nur leider konnte ich die Hilfe nicht richtig deuten. Aber ich lerne ja noch.
    @Raupi
    Deinen für Deinen Tipp.

  • Problem mit GUISetState

    • Jescho
    • 24. November 2009 um 21:25

    Hallo Forumsmitglieder, 8o

    bisher konnte ich durch lesen im Forum sehr viel lernen. Heute will ich mal vom lesenden in den schreibenden Status wechseln.
    Ich arbeite an einem Skript zum installieren/Einrichten von Programmen.
    Nun zu meinem Problem:

    ich möchte, dass nach dem beenden der Func das Hauptmenü und nicht das Auswahlmenü angezeigt wird.

    Man könnte man einen zurück button einfügen, aber welche Anweisung müßte da hinterlegt sein?

    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 0)
    $frmMain = GUICreate("Forum", 625, 445, 193, 125)
    $Label1 = GUICtrlCreateLabel("Hauptmenü", 225, 24, 450, 41)
    GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Auswahl 1", 78, 96, 175, 33, 0)
    $Button2 = GUICtrlCreateButton("Auswahl 2", 384, 96, 175, 33, 0)
    $Button3 = GUICtrlCreateButton("3", 78, 160, 175, 33, 0)
    $Button4 = GUICtrlCreateButton("4", 384, 160, 175, 33, 0)
    $Button5 = GUICtrlCreateButton("5", 78, 224, 175, 33, 0)
    $Button6 = GUICtrlCreateButton("6", 384, 224, 175, 33, 0)
    $Button7 = GUICtrlCreateButton("Schließen", 350, 304, 155, 65, 0)

    [/autoit][autoit][/autoit][autoit]

    $Gui1=GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUISetState(@SW_HIDE)
    _Abfrage1()
    GUISetState(@SW_SHOW)
    Case $Button2
    GUISetState(@SW_SHOW)
    _Abfrage2()
    GUISetState(@SW_SHOW)
    Case $Button3
    GUISetState(@SW_HIDE)
    _mglk3()
    GUISetState(@SW_SHOW)
    Case $Button4
    GUISetState(@SW_SHOW)
    _mglk4()
    GUISetState(@SW_SHOW)
    Case $Button5
    GUISetState(@SW_HIDE)
    _mglk5()
    GUISetState(@SW_SHOW)
    Case $Button6
    GUISetState(@SW_SHOW)
    _mglk6()
    Case $Button7
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _Abfrage1()
    $frmMain = GUICreate('Auswahl 1', 215, 50)
    $Button1 = GUICtrlCreateButton('Prog 1', 10, 10, 90, 30)
    $Button2 = GUICtrlCreateButton('Prog 2', 110, 10, 90, 30)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUISetState(@SW_HIDE)
    _mglk1()
    GUISetState(@SW_SHOW);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
    Case $Button2
    GUISetState(@SW_HIDE)
    _mglk2()
    GUISetState(@SW_SHOW);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
    EndSwitch
    WEnd
    EndFunc ;_Abfrage1

    [/autoit][autoit][/autoit][autoit]

    Func _Abfrage2()
    $frmMain = GUICreate('Auswahlmenue', 215, 50)
    $Button1 = GUICtrlCreateButton('Progr 3', 10, 10, 90, 30)
    $Button2 = GUICtrlCreateButton('Progr 4', 110, 10, 90, 30)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUISetState(@SW_HIDE)
    _mglk3()
    GUISetState(@SW_SHOW);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
    Case $Button2
    GUISetState(@SW_HIDE)
    _mglk4()
    GUISetState(@SW_SHOW);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
    EndSwitch
    WEnd
    EndFunc ;_Abfrage2

    [/autoit][autoit][/autoit][autoit]

    Func _mglk1()
    MsgBox(0,'','Möglichkeit 1')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _mglk2()
    MsgBox(0,'','Möglichkeit 2')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _mglk3()
    MsgBox(0,'','Möglichkeit 3')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _mglk4()
    MsgBox(0,'','Möglichkeit 4')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _mglk5()
    MsgBox(0,'','Möglichkeit 5')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _mglk6()
    MsgBox(0,'','Möglichkeit 6')
    EndFunc

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™