DualMonitor - Mousetrap bei Desktop anzeigen und maximierten Fenster-[X]

  • Für alle, die zwei Bildschirme besitzen und immer über den Rand eines Monitors hinausdüsen!
    Erstellt 2 MouseTraps: über dem Desktop-Anzeigen-Button von Win7 (immer) und wenn ein Fenster am linken Monitor maximiert ist über dem [x].
    Das ganze ist auf meine 2 1980x1080 Monitore mit dem Hauptbildschirm links ausgelegt, dürfte sich aber sicher leicht umprogrammieren lassen.
    lg tobias
    leider reagiert die Schleife nicht, wenn man zu schnell heranbraust, daher sollte man den trap-bereich vergrößern

    Skript
    [autoit]

    #include <Misc.au3>
    Opt ("TrayMenuMode", 1)
    Opt ("WinWaitDelay", 1)
    $run = True
    $exit = TrayCreateItem ("Quit")
    TraySetToolTip ("Trap MinX")
    TrayTip ("Trap MinX", "by [email='tobi_girst@autoit.de'][/email]; v9.9.0.0", 3)
    _Singleton (@ScriptName)
    While 1
    ;;;Desktop anzeigen (rechts unten)
    While MouseGetPos (0) > @DesktopWidth-13 _ ; Maus links auf Button (innerhalb)
    And MouseGetPos (1) > @DesktopHeight-38 _ ; Maus oben auf Button (innerhalb)
    And MouseGetPos (0) < @DesktopWidth _ ; Maus rechts von Button (außerhalb)
    And MouseGetPos (1) < @DesktopHeight ; Maus unterhalb von Button (außerhalb)
    _MouseTrap (@DesktopWidth-15, @DesktopHeight-40, @DesktopWidth, @DesktopHeight)
    WEnd
    ;;;Maximiertes Fenster schließen
    While MouseGetPos (0) > @DesktopWidth-49 _ ; Maus links auf Button (innerhalb)
    And MouseGetPos (1) >= 0 _ ; Maus oberhalb von Button (außenhalb)
    And MouseGetPos (0) < @DesktopWidth+1 _ ; Maus rechts von Button (außerhalb)
    And MouseGetPos (1) < 16 _ ; Maus unten auf Button (innerhalb)
    And BitAND (WinGetState (WinGetHandle("")), 32) ; Fenster maximiert
    _MouseTrap (@DesktopWidth-51, 0, @DesktopWidth, 18)
    WEnd
    _MouseTrap ()
    If TrayGetMsg () = $exit Then
    Exit 0
    EndIf
    WEnd

    [/autoit]

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

    2 Mal editiert, zuletzt von tobi_girst (25. Dezember 2011 um 23:39)

  • Neue Version:

    • Komplett neu geschrieben
    • Fängt den Cursor nun immer ein
    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: myName

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

    Script Function:
    Erstellt eine unsichtbare "Wand" rechts vom Schließen-Button eines maximierten
    Fensters am linken=Hauptmonitor und beim Desktop-Anzeigen-Bereich.
    Exit-Codes: 0: Programm vom User geschlossen
    1: Programm wird bereits ausgeführt (_Singleton)
    2: Nicht Windows 7 (@OSVersion)
    3: Hauptmonitor nicht links vom Extender

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

    #ce ----------------------------------------------------------------------------

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

    #include <Misc.au3>
    If _Singleton (@ScriptName, 1) = 0 Then
    MsgBox (16, "Trap MinX, girst9900", "TrapMinX is already running")
    Exit 1
    EndIf
    If @OSVersion <> "WIN_7" Then
    MsgBox (16, "Trap MinX, girst9900", "Only working on Windows 7")
    Exit 2
    EndIf
    $fullres = WinGetPos ("Program Manager")
    If $fullres [0] = @DesktopWidth And $fullres [1] <> @DesktopHeight Then
    MsgBox (16, "Trap MinX, girst9900", "This program requires a dual monitor setup with main screen left and extend screen right")
    Exit 3
    EndIf
    Opt ("TrayMenuMode", 1)
    Opt ("WinWaitDelay", 1)
    $exit = TrayCreateItem ("Quit")
    TraySetToolTip ("Trap MinX")
    While 1
    If TrayGetMsg () = $exit Then
    Exit 0
    EndIf
    $awp = WinGetPos (WinGetHandle(""))
    If MouseGetPos (0) < @DesktopWidth-100 Or _
    (MouseGetPos (1) < 20 And MouseGetPos (0) < @DesktopWidth And BitAND (WinGetState (WinGetHandle("")), 32) And $awp[0] < 0) Or _
    (MouseGetPos (1) > @DesktopHeight-40 And MouseGetPos (0) < @DesktopWidth) Then
    _MouseTrap (0, 0, @DesktopWidth, @DesktopHeight)
    Else
    _MouseTrap ()
    EndIf
    WEnd

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

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)