JavaScript und ControlClick

  • Nabend

    Folgendes Anliegen von mir:
    Innerhalb eines IE-Fenster habe ich JavaScript-Inhalt und darunter unter anderem ein anzuklickendes Objekt, welches von Window Info auch als Control mit dem Namen SunAwtCanvas19 erkannt wird.
    Dieses Objekt reagiert jedoch in keiner Weise auf ein ControlClick. Egal ob ich es via ClassnameNN oder Advanced Class versuche. Hat jemand eine Idee wie ich dieses Objekt "anklicken" kann ? Außer via MouseClick und Koordinaten.
    Das IE-Fenster kann ich NICHT via AutoIt starten, da es durch eine externe Anwendung geöffnet wird. Der Versuch via Quelltext der Seite an einen genaueren Link zu kommen klappt auch nicht, da hier lediglich das JavaScript nach geladen wird. Speichern der Seite und so das Sezieren des Quelltext funktioniert ebenfalls nicht.
    Aufrufen der Seite in anderen Browsers ist ebenso nicht möglich

  • Versuchs mal hiermit _IENavigate("javascript:deinbefehl;").

    Kannst das mal nem Unwissenden etwas erläutern ?

    [autoit]

    _IENavigate ( ByRef $o_object, $s_url [, $f_wait = 1] )

    [/autoit]


    Erstmal muss ich ihm klar machen welches IE-Fenster, also selbiges vorher einer Variable zuordnen. Sprich diese Variable mit $variable = _IEAttach("Titelname") definieren. Diese Variable dann in _IENavigate angeben ($variable, "dein Befehl")
    Schreib ich hier nun statt der URL einfach den ClassnameNN hin oder wie steuere ich das Ding an ?

  • http://de.wikipedia.org/wiki/Java_%28Programmiersprache%29
    http://de.wikipedia.org/wiki/JavaScript

    Java <> JavaScript. So wie du es geschildert hast, klingt es nach JRE (also Java Runtime Package). _IENavigate wird dir da herzlich wenig helfen. Klär uns mal auf: Um welche Seite geht es?

    Wenn es allerdings doch Javascript ist, dann lies im Quelltext, welche Aktion beim Klick ausgeführt wird.
    Wenn der Name der Funktion dynamisch erstellt wird, liest du ihn vorher mit StringRegExp aus dem Quelltext (_IEBodyReadHTML)

    Wenn du weißt, welche Funktion der Knopf oder was auch immer startet, (ich habe jetzt einen Beispiel Button, der die "Bestellen"-Funktion aufruft) dann navigierst du den IE zu:

    [autoit]

    _IENavigate($oIE,"javascript:Bestellen();")

    [/autoit]


    Wobei du "Bestellen" natürlich entsprechend ersetzen musst :P

  • Hab mir mal die Java Konsole geöffnet und geschaut was beim anklicken passiert.
    Soweit mein Verständnis reicht hast du Recht und es ist nicht nur ein JavaScript.
    Hab ich da überhaupt eine Chance, den Start per AutoIt auszuführen ?

    Ich bin der Meinung dies wäre die Aktion beim Klick:

    Code
    CSapplet: Command sent: start.swe?SWEMethod=GetDynamicTooltip&SWECmd=InvokeMethod&SWEService=Communications+Client&ControlName=CRM+NotReady&Work+Edit=&Work+Edit_HasFocus=false&SelectedText=+&FocusBusComp=+&refID=249
  • Puuh ehrlich gesagt bin ich da überfragt. Ich habe letzens mit einem Java Aplett gearbeitet, bei dem ich Text im Hintergrund eintragen musste.
    Über controlsend hats nicht funktioniert. Das ganze funktionierte im Endeffekt dann per _WinAPI_PostMessage / _SendMessage.
    (Musste mich auch erstmal 3 stunden in die MSDN einlesen, bis ich diesen Codefetzen hinbekommen hab)

    Spoiler anzeigen
    [autoit]


    #include <SendMessage.au3>
    Func _JSend($sText)
    $hWnd = WinGetHandle("Fenstertitel")
    If @error Then Return SetError(@error,0,0)
    $cHwnd = ControlGetHandle($hWnd,"","Edit1")
    _SendMessage($cHwnd, $WM_SETFOCUS)
    ControlSetText($hWnd, "", "Edit1", $sText)
    _SendMessage($cHwnd,$WM_CHAR,0x0D)
    _SendMessage($cHwnd,$WM_KILLFOCUS)
    EndFunc

    [/autoit]

    Villeicht hilft dir das ja IRGENDWIE weiter.

  • Hm...werd ich mir wohl mit viel Zeit ansehen müssen.
    Anderer, alternative Sache: Kann ich irgendwie, eventuell per IE.au3, die Symbolleisten in einem IE-Fenster deaktivieren ? Also jene mit den Standardschaltflächen unterhalb der Titelleiste des Fensters.
    Nicht grundsätzlich deaktivieren sondern nur beim Ausführen des Script selbst abschalten und auch wieder einschalten

  • Wenn du schon mit dem Gedanken spielst, das nicht im Hintergrund ablaufen zu lassen (ich denke, du willst die Symbolleisten für mouseclicks deaktivieren?) dann arbeite doch gleich mit ImageSearch.

    Ansonsten wüsst ich grad keine alternative (was aber nicht heißen muss, dass es keien gibt.)