WebBrowser Multitask | Problem mit eingabe von Enter usw.

  • Also...-... Ich habe einen Webbrowser gescriptet, der mehrere Tasks unterstützt. Er tut dies, indem er Immer nur einen Task anzeigt, und die anderen per GUICtrlsetstate(...,$GUI_HIDE) ausblendet. Alles funktioniert, wie es soll. einziges Problem: Wenn ich im Internet irgendwo etwas eingebe, hört er weder auf Enter, noch auf Entfernen usw. soll heißen, dass wenn ich bei Google im Browser etwas suchen möchte, ich weder Buchstaben löschen kann, noch per Enter die Suche starten kann.
    Hier mal das komplette Script, weil ich keinen Plan habe, wo der Auslöser liegen könnte...:

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    #include <INet.au3>
    #Include <string.au3>
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    $IE = _IECreateEmbedded()
    $IE2 = _IECreateEmbedded()
    $IE3 = _IECreateEmbedded()
    $IE4 = _IECreateEmbedded()
    $GUI = GUICreate("JustBrowse",@Desktopwidth,@Desktopheight,0,0,$WS_POPUP)
    $URL = GUICtrlCreateInput("URL",@Desktopwidth / 4,0,@Desktopwidth / 2,25)
    GUICtrlsetfont(-1,12)
    $R = GUICtrlcreateButton("R",50,0,25,25)
    $B = GUICtrlcreateButton("<",0,0,25,25)
    $F = GUICtrlcreateButton(">",25,0,25,25)
    $SG = GUICtrlcreatebutton("Search Google",@Desktopwidth - @Desktopwidth / 4 +200,0,100,25)
    $SY = GUICtrlcreatebutton("Search YouTube",@Desktopwidth - @Desktopwidth / 4 + 100,0,100,25)
    $N = GUICtrlcreatebutton("Navigate",@Desktopwidth - @Desktopwidth / 4,0,100,25)
    $I = GUICtrlcreateobj($IE,0,0,@Desktopwidth,@Desktopheight - 25)
    $I2 = GUICtrlcreateobj($IE2,0,0,@Desktopwidth,@Desktopheight - 25)
    $I3 = GUICtrlcreateobj($IE3,0,0,@Desktopwidth,@Desktopheight - 25)
    $I4 = GUICtrlcreateobj($IE4,0,0,@Desktopwidth,@Desktopheight - 25)
    _IENavigate($IE,"Google.de")
    _IENavigate($IE2,"Google.de")
    _IENavigate($IE3,"Google.de")
    _IENavigate($IE4,"Google.de")
    $M = GUICtrlcreateMenu("Tabs")
    $M1 = GUICtrlcreateMenuItem("Tab 1 | " & _IEPropertyGet($IE,"title"),$M)
    $M2 = GUICtrlcreateMenuItem("Tab 2 | " & _IEPropertyGet($IE,"title"),$M)
    $M3 = GUICtrlcreateMenuItem("Tab 3 | " & _IEPropertyGet($IE,"title"),$M)
    $M4 = GUICtrlcreateMenuItem("Tab 4 | " & _IEPropertyGet($IE,"title"),$M)

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

    GUIsetstate()
    BitOr(BitOr(BitOr($GUI_HIDE,$GUI_DISABLE),$GUI_DISABLE),$GUI_DISABLE)
    BitOr(BitOr($GUI_SHOW,$GUI_ENABLE),$GUI_ENABLE)
    GUICtrlsetstate($I2,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate($I3,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate($I4,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($URL,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($B,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($F,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($R,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($N,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($SG,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($SY,BitOr($GUI_HIDE,$GUI_DISABLE))

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

    GUICtrlsetdata($URL,_IEPropertyGet($IE,"locationurl"))
    $xx = 0
    $t1x = _IEPropertyGet($IE,"locationurl")
    $t2x = _IEPropertyGet($IE2,"locationurl")
    $t3x = _IEPropertyGet($IE3,"locationurl")
    $t4x = _IEPropertyGet($IE4,"locationurl")
    $TAB = 1
    While 1
    $1x = _IEPropertyGet($IE,"locationurl")
    If $t1x <> $1x Then
    $t1x = _IEPropertyGet($IE,"locationurl")
    GUICtrlsetdata($URL,$t1x)
    GUICtrlsetdata($M1,"Tab 1 | " & _IEPropertyget($IE,"title"))
    Endif

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

    $2x = _IEPropertyGet($IE2,"locationurl")
    If $t2x <> $2x Then
    $t2x = _IEPropertyGet($IE2,"locationurl")
    GUICtrlsetdata($URL,$t2x)
    GUICtrlsetdata($M2,"Tab 2 | " & _IEPropertyget($IE2,"title"))
    Endif

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

    $3x = _IEPropertyGet($IE3,"locationurl")
    If $t3x <> $3x Then
    $t3x = _IEPropertyGet($IE3,"locationurl")
    GUICtrlsetdata($URL,$t3x)
    GUICtrlsetdata($M3,"Tab 3 | " & _IEPropertyget($IE3,"title"))
    Endif

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

    $4x = _IEPropertyGet($IE4,"locationurl")
    If $t4x <> $4x Then
    $t4x = _IEPropertyGet($IE4,"locationurl")
    GUICtrlsetdata($URL,$t4x)
    GUICtrlsetdata($M4,"Tab 4 | " & _IEPropertyget($IE4,"title"))
    Endif

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

    Hotkeyset("{F10}","_Options")
    Switch GUIGetMsg()

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

    Case $M1
    GUICtrlsetstate ($I,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlsetstate ($I2,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I3,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I4,BitOr($GUI_HIDE,$GUI_DISABLE))
    $Tab = 1
    Case $M2
    GUICtrlsetstate ($I,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I2,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlsetstate ($I3,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I4,BitOr($GUI_HIDE,$GUI_DISABLE))
    $Tab = 2
    Case $M3
    GUICtrlsetstate ($I,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I2,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I3,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlsetstate ($I4,BitOr($GUI_HIDE,$GUI_DISABLE))
    $Tab = 3
    Case $M4
    GUICtrlsetstate ($I,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I2,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I3,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetstate ($I4,BitOr($GUI_SHOW,$GUI_ENABLE))
    $Tab = 4

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

    Case $GUI_EVENT_CLOSE
    Exit
    Case $B
    If $Tab = 1 then
    _IEAction($IE,"Back")
    elseif $Tab = 2 Then
    _IEAction($IE2,"Back")
    elseif $Tab = 3 Then
    _IEAction($IE3,"Back")
    elseif $Tab = 4 Then
    _IEAction($IE4,"Back")
    Endif
    Case $F
    If $Tab = 1 then
    _IEAction($IE,"forward")
    elseif $Tab = 2 Then
    _IEAction($IE2,"forward")
    elseif $Tab = 3 Then
    _IEAction($IE3,"forward")
    elseif $Tab = 4 Then
    _IEAction($IE4,"forward")
    Endif
    Case $R
    If $Tab = 1 then
    _IEAction($IE,"refresh")
    elseif $Tab = 2 Then
    _IEAction($IE2,"refresh")
    elseif $Tab = 3 Then
    _IEAction($IE3,"refresh")
    elseif $Tab = 4 Then
    _IEAction($IE4,"refresh")
    Endif
    Case $N
    If $Tab = 1 then
    _IENavigate($IE,GUICtrlread($URL))
    elseif $Tab = 2 Then
    _IENavigate($IE2,GUICtrlread($URL))
    elseif $Tab = 3 Then
    _IENavigate($IE3,GUICtrlread($URL))
    elseif $Tab = 4 Then
    _IENavigate($IE4,GUICtrlread($URL))
    Endif

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

    Case $SY
    If $Tab = 1 then
    _IENavigate ($IE,"www.youtube.com/results?search_query=" & GUICtrlread($URL))
    elseif $Tab = 2 Then
    _IENavigate ($IE2,"www.youtube.com/results?search_query=" & GUICtrlread($URL))
    elseif $Tab = 3 Then
    _IENavigate ($IE3,"www.youtube.com/results?search_query=" & GUICtrlread($URL))
    elseif $Tab = 4 Then
    _IENavigate ($IE4,"www.youtube.com/results?search_query=" & GUICtrlread($URL))
    Endif

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

    Case $SG
    If $Tab = 1 then
    _IENavigate($IE,"www.google.de/search?q=" & GUICtrlread($URL))
    elseif $Tab = 2 Then
    _IENavigate($IE2,"www.google.de/search?q=" & GUICtrlread($URL))
    elseif $Tab = 3 Then
    _IENavigate($IE3,"www.google.de/search?q=" & GUICtrlread($URL))
    elseif $Tab = 4 Then
    _IENavigate($IE4,"www.google.de/search?q=" & GUICtrlread($URL))
    Endif

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

    EndSwitch

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

    WEnd

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

    Func _Options ()
    If $xx = 0 Then
    GUICtrlSetState($URL,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlSetState($B,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlSetState($F,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlSetState($R,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlSetState($N,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlSetState($SG,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlSetState($SY,BitOr($GUI_SHOW,$GUI_ENABLE))
    GUICtrlsetpos($I,0,25,@Desktopwidth,@Desktopheight - 50)
    GUICtrlsetpos($I2,0,25,@Desktopwidth,@Desktopheight - 50)
    GUICtrlsetpos($I3,0,25,@Desktopwidth,@Desktopheight - 50)
    GUICtrlsetpos($I4,0,25,@Desktopwidth,@Desktopheight - 50)
    $xx = 1
    Else
    GUICtrlSetState($URL,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($F,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($B,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($R,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($N,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($SG,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlSetState($SY,BitOr($GUI_HIDE,$GUI_DISABLE))
    GUICtrlsetpos($I,0,0,@Desktopwidth,@Desktopheight - 25 )
    GUICtrlsetpos($I2,0,0,@Desktopwidth,@Desktopheight - 25)
    GUICtrlsetpos($I3,0,0,@Desktopwidth,@Desktopheight - 25)
    GUICtrlsetpos($I4,0,0,@Desktopwidth,@Desktopheight - 25)
    $xx = 0
    Endif

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

    Endfunc

    [/autoit]


    Bitte helft mir!! ?(

  • Ich kann dir bei deinem Problem zwar nicht helfen, will aber anmerken, dass du den Fehler vielleicht sogar selbst finden würdest, wenn du das Skript mit Arrays zusammenkürzen würdest. Alles ordentlich einzurücken ist auch nie schlecht, denn irgendwann kennst du dich selbst nicht mehr aus.

  • Ergänzend sollte man seine Variablen vielleicht auch noch etwas aussagekräftiger benennen. Ebenfalls problematisch sehe ich das hotkeyset(..) innerhalb der gui schleife, das hat da gewiss nichts verloren und ist evtl. sogar die Ursache für das seltsame Verhalten der GUI.

    Also erstmal Code aufräumen und auch optisch durch Einrückungen vernünftig gestalten, dann kann man vielleicht auch den Fehler finden.

    PS: Zumindestens unter meiner Autoit Version fehlt da oben im Code das Include <windowsConstants.au3>. Mag aber sein, dass das in der aktuellen Autoit Version irgendwoanders mit drin ist (ich meine sowas im changelog gelesen zu haben)