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. highend

Beiträge von highend

  • Hilfe bei der Konvertierung einer AutoHotkey Funktion

    • highend
    • 12. August 2014 um 16:10
    Zitat

    Ich finde die Zusammenstellung der Kriterien für eine Auswahl von "richtigen" Fenstern bisschen skurril.

    Ich prinzipiell auch, aber im Zusammenspiel mit der "WinGet" Funktion funktioniert es unter AHK absolut perfekt.

    Herzlichen Dank für deine Anpassung an AutoIt!

    LG,
    highend

  • Hilfe bei der Konvertierung einer AutoHotkey Funktion

    • highend
    • 12. August 2014 um 09:30

    Hallo zusammen,

    Ich möchte gern eine Liste von _echten_ Fenstern erhalten ohne irgendwelche "unnütze" Einträge.
    Für AutoHotkey nutze ich schon seit längerer Zeit die Folgende:

    Code
    ; This checks if a window is a "real" window
    ; Derived from: http://www.autohotkey.com/board/topic/5801-alt-tab-replacement-related-getting-only-alt-tab-windows/#entry35580
    IsWindow(hwnd)
    {
    	GW_OWNER := 4 ; Window is owned. Windows like the systray aren't owned
    	WS_EX_APPWINDOW := "0x40000" ; If set = window is visible on taskbar
    	WS_EX_TOOLWINDOW := "0x80" ; If set = window is NOT on the alt-tab list
    
    
    	WinGet, winExStyle, ExStyle, ahk_id %hwnd%
    
    
    	return ((!DllCall("GetWindow", "uint", hwnd, "uint", GW_OWNER)
    			and !(winExStyle & WS_EX_TOOLWINDOW))
    			or (winExStyle & WS_EX_APPWINDOW)) ? 1 : 0
    }
    Alles anzeigen

    Ich hab nun versucht, sie auf AutoIt zu portieren, aber ich bin mit den BitAND Funtionen nicht vertraut (und frage mich, ob ich die überhaupt nutzen muss).

    Mein "Versuch":

    Code
    Local $var = WinList()
    
    
    For $i = 1 To $var[0][0]
    	; Only display visble windows that have a title
    	If $var[$i][0] <> "" And IsWindow($var[$i][1]) Then
        	MsgBox(0, "Details", "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1])
    	EndIf
    Next
    
    
    ;  And StringInStr($var[$i][0], "XYplorer"
    ; This checks if a window is a "real" window
    ; Derived from: http://www.autohotkey.com/board/topic/5801-alt-tab-replacement-related-getting-only-alt-tab-windows/#entry35580
    Func IsWindow($hwnd)
    	$GW_OWNER = 4 ; Window is owned. Windows like the systray aren't owned
    	$WS_EX_APPWINDOW = "0x40000" ; If set = window is visible on taskbar
    	$WS_EX_TOOLWINDOW = "0x80" ; If set = window is NOT on the alt-tab list
    
    
    	Local $winExStyle =  DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hwnd, "int", -20) ; Get existing ExStyle
    	If ((NOT DllCall("GetWindow", "uint", $hwnd, "uint", $GW_OWNER) AND BitAND($winExStyle, $WS_EX_TOOLWINDOW)) OR BitAND($winExStyle, $WS_EX_APPWINDOW)) Then
        	Return 1
    	Else
        	Return 0
    	EndIf
    EndFunc ;==>IsWindow
    Alles anzeigen

    Allerdings erhalte ich praktisch jedes "Fenster", auch wenn es keines ist, was man anklicken könnte.

    Könnte jemand mal drüberschauen und Fehler ausbessern?

    Danke sehr!

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™