WinSetTrans Hotkey

  • Hiho, ich würde gerne nen hotkey basteln, mit dem man ein oder mehrere fenster transparent setzen kann, auf erneuten druck des hotkeys, dies wieder aufgehoben wird. das ganze würde ich gerne in ein anderes script integrieren.

    jmd ne idee ?

    PS: thx, klappt wunderbar =)
    jetzt wollt ich mal gucken, ob ich es noch hinbekomme, so dass man das fenster durch ALT UP/DOWN oder ALT +/- immer um 1 (oder 10) punkte un/transparenter machen kann.

  • nAbend,

    Spoiler anzeigen
    [autoit]


    HotKeySet('t','settrans') ; Anvisiertes Fenster transparent/normal machen
    HotKeySet('!t','settrans2') ; Alle Fenster transparent
    HotKeySet('+t','settrans3') ; Alle Fenster normal
    Dim $transwins, $wins

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

    While 1
    Sleep(25)
    WEnd

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

    Func settrans()
    $wins = WinList()
    For $i = 1 To $wins[0][0] Step 1
    If WinActive($wins[$i][1]) Then
    If StringInStr($transwins, $wins[$i][1]) = 0 Then
    WinSetTrans($wins[$i][1],'', 50)
    $transwins = $transwins & $wins[$i][1] & ','
    Else
    WinSetTrans($wins[$i][1],'', 255)
    $transwins = StringReplace($transwins, $wins[$i][1] & ',', '')
    EndIf
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func settrans2()
    $wins = WinList()
    $transwins = ''
    For $i = 1 To $wins[0][0] Step 1
    WinSetTrans($wins[$i][1],'', 50)
    $transwins = $transwins & $wins[$i][1] & ','
    Next
    EndFunc

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

    Func settrans3()
    $wins = WinList()
    For $i = 1 To $wins[0][0] Step 1
    WinSetTrans($wins[$i][1],'', 255)
    Next
    $transwins = ''
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Dan (7. Mai 2008 um 22:53)

  • Transparenz eines Fensters bekommt man mit

    Spoiler anzeigen
    [autoit]

    Dim $Transparency, $i_transcolor
    While 1
    $x = _API_GetLayeredWindowAttributes(WinGetHandle(""),$i_transcolor,$Transparency)
    ToolTip("Transparent Color: " & $i_transcolor &@CRLF & "Transparency: " & $Transparency,Default,Default,WinGetTitle(""))
    WEnd
    ;===============================================================================
    ;
    ; Function Name: _API_GetLayeredWindowAttributes
    ; Description:: Gets Layered Window Attributes:) See MSDN for more informaion
    ; Parameter(s):
    ; $hwnd - Handle of GUI to work on
    ; $i_transcolor - Returns Transparent color
    ; $Transparency - Returns Transparancy of GUI
    ; Requirement(s): Layered Windows
    ; Return Value(s): Success: Usage of LWA_ALPHA and LWA_COLORKEY (use BitAnd)
    ; Error: 0
    ; @error: 1 to 3 - Error from DllCall
    ; @error: 4 - Function did not succeed - use
    ; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information
    ; Author(s): Prog@ndy
    ;
    ;===============================================================================
    ;
    Func _API_GetLayeredWindowAttributes($hwnd, ByRef $i_transcolor, ByRef $Transparency)
    $i_transcolor = -1
    $Transparency = -1
    Local Const $AC_SRC_ALPHA = 1
    Local Const $ULW_ALPHA = 2
    Local Const $LWA_ALPHA = 0x2
    Local Const $LWA_COLORKEY = 0x1
    Local $Ret = DllCall("user32.dll", "int", "GetLayeredWindowAttributes", "hwnd", $hwnd, "long*", $i_transcolor, "byte*", $Transparency, "long*",0)
    Select
    Case @error
    Return SetError(@error,0,0)
    Case $ret[0] = 0
    Return SetError(4,0,0)
    Case Else
    $i_transcolor = $ret[2]
    $Transparency = $ret[3]
    Return $ret[4]
    EndSelect
    EndFunc ;==>_API_SetLayeredWindowAttributes

    [/autoit]