embedded ie klaut eingabe von 2ter Gui

  • Hallo,

    es gab schon einmal einen Thread mit diesem Problem.....dieser ist nun aber schon 2 Jahre alt und hatte keine Lösung.

    Mein Problem ist recht einfach....ich kann im 2ten Gui im input-Feld schreiben und mit Cursortasten nach links und rechts bewegen.
    Sobald ich aber einen Klick in das embedded Google-Fenster mache und zurück ins input-Feld gehe.....funktionieren die Cursortasten nicht mehr bzw. sind diese irgendwie noch am embedded ie gebunden.

    Ich kann also nicht mehr per Backspace das Eingetippte ändern.

    Wenn ich statt 2 Guis nur eine habe besteht das Problem nicht mehr.

    Habe ich einen Befehl übersehen? Kann man den ie anders einbinden?


    P.S. habe gerade mehrmals meine kurzes Beispielprogramm gestartet und festgestellt, das (weshalb auch immer) man nun von Anfang an schon die Cursortasten nicht benutzen kann im Inputfeld. Sobald amn aber einmal in Google war und wieder zurück ins input geht, wird das ie bild verschoben sobald man cursor "runter" drückt.

    [autoit]

    #include
    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;#include "GUIScrollbars_Ex.au3"
    $GUI = GUICreate("Test",1350, 700,default,default)
    $object = ObjCreate("Shell.Explorer.2")
    $object_ctrl = GUICtrlCreateObj($object, 300, 100, 800, 400)
    GUISetState()
    $GUI2 = GUICreate("2",200, 200,10,10,$WS_POPUP, $WS_EX_MDICHILD, $GUI)
    GUICtrlCreateInput("",10,10,300)
    GUISetState()
    _IENavigate($object, "http://google.de")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
  • Wenn du die Reihenfolge der GUIs umkehrst geht es.

    Kann mir das nur so erklären, dass Steuertasten immer an die erste GUI zur Auswertung gesendet werden.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $GUI2 = GUICreate("2",200, 200,10,10,0)
    GUICtrlCreateInput("",10,10,300)

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

    GUISetState()

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

    ;#include "GUIScrollbars_Ex.au3"
    $GUI = GUICreate("Test",1350, 700,default,default,$WS_CLIPCHILDREN )
    $object = ObjCreate("Shell.Explorer.2")
    $object_ctrl = GUICtrlCreateObj($object, 300, 100, 800, 400)
    GUISetState()

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

    _IENavigate($object, "http://google.de")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
  • Hallo Bitboy, danke für deinen Vorschlag.

    Das Problem ist dann aber das die 2te GUI nicht mehr an die erste gebunden ist und auch von der ersten überlagert wird.

    Ziel ist ein eigentlich ein Hauptfenster mit embedded object und ein 2tes GUI das größer (mit Hilfe von Scrollbars) per WS_POPUP ans GUI 1 gebunden ist.

    Alle Elemente befinden sich auf dem zweiten GUI.

    Im Grunde könnte ich auch 2te GUI weglassen....dann aber wäre der Scrollbalken ganz rechts am ersten GUI und ich würde das embedded object mit scrollen. Dieses soll aber stehen bleiben und nur die "Menüführung" also GUI 2 soll sich bewegen.

    habe oben den Quelltext nochmal minimal abgeändert.

    So soll es eigentlich aussehen: UDF scrollbar is im anhang

    Spoiler anzeigen
    [autoit]

    #include <GUIScroll.au3>
    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;#include "GUIScrollbars_Ex.au3"
    $GUI = GUICreate("Test",1350, 420,default,default)
    $object = ObjCreate("Shell.Explorer.2")
    $object_ctrl = GUICtrlCreateObj($object, 300, 100, 800, 400)
    GUISetState()
    $GUI2 = GUICreate("2",200, 400,10,10,$WS_POPUP, $WS_EX_MDICHILD, $GUI)
    Scrollbar_Create($GUI2, $SB_VERT, 800); But the actual window is 700 pixels high
    GUICtrlCreateInput("SSSSS",10,10,300)
    for $i=1 To 20
    GUICtrlCreateLabel("TEST",10,30*$i)
    Next
    GUICtrlCreateInput("AAAAA",10,700,300)
    GUISetState()
    _IENavigate($object, "http://google.de")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
  • Guten Morgen (Auto)Bert,

    habe mir dein Beispiel man näher angeschaut.
    Wenn du mich auf etwas spezielles hinweisen wolltest, dann habe ich es warscheinlich großzügig übersehen....entschuldige bitte.

    Aber du hast im Grunde auch nur ein GUI-Fenster auf dem die Steuerelemente sowie das ie-Fenster sitzen.

    Wenn ich mein Programm auch nur mit einem GUI-Fenster mache, gibt es bei mir auch keine Probleme.
    Es scheint nur der Wechsel vom ie Fenster ins zweite GUI-Fenster problematisch zu sein.

    Ich bin noch etwas am herumexperimentieren mit dieser Zeile:

    [autoit]

    ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents2")

    [/autoit]

    und

    [autoit]

    $SinkObject = 0 ; IE Eventzuweisung aufheben

    [/autoit]

    da dieses Eventaufheben interessant klingt. Aber im Grunde ist es ja kein richtiges Event im ie das gestartet wurde.


    Habe in deinen Code einmal das GUI2 von mir eingebaut und die Seite Google.de genommen (weil dort gleich ein Eingabefenster ist). Die Elemente sind alle im zweiten Fenster.....habe aber den gleichen Fehler....sobald ich in der Google-Eingabe-Zeile war funktionieren die Cursortasten nur noch im ie-Fenster.

  • Hallo Sprenger120


    Habe gleich mal ein

    [autoit]

    GUISwitch($gui2,$input)

    [/autoit]

    bzw ein

    [autoit]

    GUISwitch($gui2)

    [/autoit]

    in meine while 1 reingehauen.

    Trotz allem liegt der fokus auf dem google eingabefeld....auch mehrmals hin und her klicken hat den selben Effekt.

    guiswitch zeigt keine Wirkung.

    Trotzdem Danke für die Idee....bin ganz freudig ins scite gesprungen und hatte schon gedacht...mensch...na klar....so was einfaches. :)

  • Nagut....ich denke mal ich muß von dem Ansatz 2 Guis (1. Hauptfenster 2. Bedienfenster scrollbar) wegkommen.

    Hat denn womöglich einer eine Idee was ich anstelle dieser Methode machen könnte?

    Wie gesagt einfach alles in einem Fenster funktioniert gut....aber dieses Scrollen das mir den ie embedded mit wegscrollt ist nervig.

    Ich bedanke mich aber trotzdem nochmal an die 3 die versucht haben mir zu helfen.