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

Beiträge von SmilingStar

  • JavaScript und ControlClick

    • SmilingStar
    • 5. März 2010 um 11:41
    Zitat von SEuBo

    http://de.wikipedia.org/wiki/Java_(Programmiersprache)
    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

    Alles anzeigen

    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 ?

    Code
    [03/05/2010 11:20:56:862]::CSapplet: CSSToolBar.getSelText: +
    [03/05/2010 11:20:56:862]::CSapplet: CSSToolBar.getFocusInfo1: ( )
    [03/05/2010 11:20:56:862]::CSapplet: CSSToolBar.getFocusInfo2: &Work+Edit=&Work+Edit_HasFocus=false&SelectedText=+&FocusBusComp=+
    [03/05/2010 11:20:57:549]::CSapplet: invokeCommandToolTip: start.swe?SWEMethod=GetDynamicTooltip&SWECmd=InvokeMethod&SWEService=Communications+Client&ControlName=CRM+NotReady&Work+Edit=&Work+Edit_HasFocus=false&SelectedText=+&FocusBusComp=+&refID=249
    [03/05/2010 11:20:57:549]::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
    [03/05/2010 11:20:57:549]::CSapplet: sendCommand_Ax
    [03/05/2010 11:20:57:580]::CSapplet: Command received: <command name="ChangeToolTip" control="CRM NotReady" value="NotReady" />
    [03/05/2010 11:20:57:596]::CSapplet: CMDTHREAD IS GONE
    =============MouseOver
    [03/05/2010 11:21:00:643]::CSapplet: Command sent: start.swe?SWECmd=HTML+Comm+CRM+NotReady&Work+Edit=&Work+Edit_HasFocus=false&SelectedText=+&FocusBusComp=+&refID=249
    [03/05/2010 11:21:00:643]::CSapplet: sendCommand_RPC
    [03/05/2010 11:21:00:752]::CSapplet: CMDTHREAD IS GONE
    Alles anzeigen

    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
  • JavaScript und ControlClick

    • SmilingStar
    • 4. März 2010 um 22:47
    Zitat von m-obi

    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 ?

  • JavaScript und ControlClick

    • SmilingStar
    • 4. März 2010 um 22:17

    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

  • Class Edit auf inhalt prüfen und warten auf fertiges Laden eines IE-Fensters

    • SmilingStar
    • 3. März 2010 um 14:16
    Zitat von Schnitzel

    #include <IE.au3> AutoItSetOption("WinTitleMatchMode", 2) ShellExecute("http://www.t-online.de") $oIE = _IEAttach("t-online.de") msgbox(0,"",$oIE)

    Den anderen hab ich extra als gelöst markiert, damit niemand bei den verschiedenen Fragen durcheinander kommt. ^^
    Bekomm bei deiner Variante 0 zurück

  • Class Edit auf inhalt prüfen und warten auf fertiges Laden eines IE-Fensters

    • SmilingStar
    • 3. März 2010 um 14:07
    Zitat von SEuBo
    [autoit]

    $oIE = _IEAttach("Fenstertitel")
    _IELoadWait($oIE)

    [/autoit]

    Meine MsgBox die ich zum Test dahinter gesetzt hab, geht sofort auf. Er scheint also nicht zu warten bzw. gleich beim ausführen des Befehls weiter zu machen
    Habs hiermit versucht:

    [autoit]


    #include <IE.au3>
    AutoItSetOption("WinTitleMatchMode", 2)
    ShellExecute("http://www.t-online.de")
    $oIE = _IEAttach("t-online.de")
    _IELoadWait($oIE)

    [/autoit]
  • Class Edit auf inhalt prüfen und warten auf fertiges Laden eines IE-Fensters

    • SmilingStar
    • 3. März 2010 um 09:27

    Gibts eine Möglichkeit zu kontrollieren ob ein Edit Inhalt hat, sprich ob darin etwas steht ? Möchte das als Bedingung nutzen, um mein Script weiter auszuführen
    Edit wird nicht durchs Script erzeugt und gehört zu einer externen Anwendung.

    Und als zweites: Gibts eine Möglichkeit explizit zu warten, bis ein IE-Fenster fertig geladen ist ?
    Bei mir lädt eine externe Anwendung welche per Script gestartet wird, ein IE-Fenster. In diesem möchte oder muss ich mit MouseClick einen Button anklicken, welchen ich nicht per ControlClick erreiche. Da hier jedoch Java Script benutzt wird, muss ich zwingend auf das komplette Laden warten - sonst existiert mein Ziel noch gar nicht.
    Laut Window Info ist das Ziel Class SunAwtCanvas Instance 19. Diesen Button bekomm ich mit ControlClick aber nicht geklickt.
    _IELoadWait hab ich gefunden aber da müsste ich vorab dieses IE-Fenster direkt per Script starten, was nicht möglich ist. Mein IE-Fenster wird durch eine andere Anwendung gestartet - handelt sich um seine SIEBEL-Anwendung

  • MouseClick-Koordinaten relativ zum Fenster bzw. bei unterschiedlichen Auflösungen

    • SmilingStar
    • 3. März 2010 um 07:57

    Weitere Frage: Gibts eine Möglichkeit zu kontrollieren ob ein Edit Inhalt hat, sprich ob darin etwas steht ? Möchte das als Bedingung nutzen, um mein Script weiter auszuführen

    Und als zweites: Gibts eine Möglichkeit explizit zu warten, bis ein IE-Fenster fertig geladen ist ?
    Wie schon angedeutet wurde, lädt bei meinem IE-Fenster in welchem ich MouseClicks ausführen will, einiges an JavaScript als Inhalt. Und bevor diese nich fertig sind, ist auch der anzuklickende Punkt nicht da
    _IELoadWait hab ich gefunden aber da müsste ich vorab dieses IE-Fenster direkt per Script starten, was nicht möglich ist. Mein IE-Fenster wird durch eine andere Anwendung gestartet - handelt sich um seine SIEBEL-Anwendung

  • MouseClick-Koordinaten relativ zum Fenster bzw. bei unterschiedlichen Auflösungen

    • SmilingStar
    • 2. März 2010 um 23:33
    Zitat von Schnitzel

    @StartupDir sollte schon der pfad zum autostart ordner des users sein.

    was gibt es denn bei dir aus?

    msgbox(0,"",@StartupDir)

    Er spuckt mir in der Tat einen Ordner aus: C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    Weswegen ich Zweifel: Via Start-Button sehe ich im Ordner Autostart eine Verknüfung, über @StartupDir ist der Ordner leer. Gibt ja auch noch StartupCommonDir, hier werden dann offensichtlich Verknüfungen im Ordner angezeigt, welche für alle User angelegt wurden.
    Vielleicht wichtig: Ich probiere das gerade bei Vista aus

  • MouseClick-Koordinaten relativ zum Fenster bzw. bei unterschiedlichen Auflösungen

    • SmilingStar
    • 2. März 2010 um 23:15

    Nen ganz anderes anliegen, gibts ne Variable für den Autostart-Ordner von Windows ? Hab zwar @StartupDir gefunden aber dabei scheint es sich nicht um das Verzeichnis des aktuellen Users zu handeln

  • MouseClick-Koordinaten relativ zum Fenster bzw. bei unterschiedlichen Auflösungen

    • SmilingStar
    • 2. März 2010 um 20:09
    Zitat von Schnitzel

    hilft dir der MouseCoordMode den du mithilfe von Opt() setzten kannst weiter?

    War mir bis jetzt noch nicht bekannt. Allerdings hab ich Probleme die Unterschiede zwischen 0 und 2 zu verstehen
    0 = relative Koordinaten zum aktiven Fenster
    2 = relative Koordinaten zum Anwendungsbereich des aktiven Fensters
    Bei 0 sind die Koordinaten auf das aktive Fenster bezogen und nicht den Desktop aber wie ist das mit 2 gemeint ? Anwendungsbereich des aktiven Fensters ? ?(
    Und woher bekomm ich dann eigentlich diese relativen Koordinaten ? Window Info liefert mir meines Erachtens unter Mouse ja nur jene mit Bezug auf den Desktop.
    Die Frage wäre geklärt, in Window Info einfach Coord Mode ändern :wacko:

    Zitat

    Hallo SmillingStar,

    du solltest in der Hilfe "IE Benutzerdefinierte Funktion Referenz" durchlesen, damit kannst du den IE besser automatisieren, als es über Mausklicks geht,

    mfg (Auto)Bert

    Eventuell stell ich mich hier auch etwas Blöd an aber wenn ich in der Online-Version der AutoIt-Hilfe suchen will, bekomm ich eine Fehlermeldung und in der Download-Version schein ich für das Nutzen der Suchfunktion auch zu Blöd zu sein. 8|

  • MouseClick-Koordinaten relativ zum Fenster bzw. bei unterschiedlichen Auflösungen

    • SmilingStar
    • 2. März 2010 um 09:31

    Hallo


    Folgendes Problem. Möchte in einem Fenster, soweit ich weiß Java welches innerhalb eines IE-Fenster ausgeführt wird, einen bestimmten Button anklicken bzw. eine bestimmte Stelle. Die Position des anzuklickenden Objekts variiert jedoch teilweise durch zum Bsp. unterschiedlich große Symbolleisten oder auch eine unterschiedliche Auflösung.

    Innerhalb des entsprechenden Java-Fensters bleibt das Objekt an der gleichen Stelle. Es kann jedoch durch eine unterschiedliche Auflösung oder eine andere Position des Fensters eventuell nicht "getroffen" werden. Gib es da eine Möglichkeit nicht die Koordinaten zu nutzen, die durch die Gesamtbildschirmauflösung beeinflusst sind ? Sozusagen sowas wie "dieses Fenster und innerhalb dieses Fenster dort und dort". Wie gesagt ist es Java, ich hab also gar kein Objekt welches ich mit Window Info find.

  • Dialoge in Excel per ControlClick/Send bedienen

    • SmilingStar
    • 1. März 2010 um 12:50
    Zitat von Schnitzel

    ich denke winmove ist das was du suchst ;)

    [autoit]

    WinMove ( "title", "text", x, y [, width [, height[, speed]]] )

    [/autoit]

    Würd ich eher als Behelfslösung bezeichnen, da ich hier die Auflösung des Desktops kennen und eingeben muss. Such eher nach einer Möglichkeit die vergleichbar zu dem entsprechenden Browserbutton das Fenster eben maximiert.

    Habs gefunden, WinSetState mit dem Flag @SW_MAXIMIZE macht genau das

  • Dialoge in Excel per ControlClick/Send bedienen

    • SmilingStar
    • 1. März 2010 um 09:25

    Ich nutze mal meinen Thread um schnell eine andere Frage hinterher zu schießen:
    Gibt es eine Möglichkeit, ein zuvor geöffnetes IE-Fenster zu maximieren ?
    Also nicht Vollbild wie bei F11 sondern einfach nur über die komplette Bildschirmfläche öffnen.
    Irgendwelche Standardeinstellungen am PC selbst für den IE möchte ich nicht verändern

  • Dialoge in Excel per ControlClick/Send bedienen

    • SmilingStar
    • 24. Februar 2010 um 22:32

    Nabend

    Ich hab bei mir eine Exceldatei, bei welcher nach dem Start erst die "klassische Warnung" von wegen Makros sind Böse kommt und ich diese aktivieren kann.
    Im Anschluss kommt ein erstes Fenster welches vom vorab aktivierten Makro stimmt und mir Ja/Nein Schaltflächen anbietet. Wenn ich mir per WinWait oder WinActivate diesen Dialog auswählen möchte, scheint er ihn nicht zu finden. Laut Window Info heißt dieses Fenster Microsoft Excel, also genau wie das offene Excel selbst.
    Gibt es irgendeine Möglichkeit diese Fenster bzw. die enthaltenen Button trotzdem anzuklicken ? Wie gesagt ich hab den Verdacht, Autoit bzw. die kompilierte Exe findet die entsprechenden Fenster innerhalb von Excel nicht.

  • Text aus Class Edit lesen und in anderes Feld schreiben

    • SmilingStar
    • 23. Februar 2010 um 22:45
    Zitat von chip

    Immer schauen das die Befehler richtig geschrieben sind, Das heißt "WinWait" nicht "Winait" ;)

    [autoit]

    ShellExecute ("MeinProgramm.exe")

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

    WinWait("Fenstername mit Leerzeichen","",3)
    ControlClick("Fenstername mit Leerzeichen","",1209)
    WinWait("Fenstername2","")
    ControlClick("Fenstername2","",1101)
    ControlClick("Fenstername2","",1102)
    WinWait("[CLASS:WindowsForms10.Window.8.app3]","",3)
    send("{ENTER}")

    [/autoit]
    Alles anzeigen

    Hm.. kleiner Fehler, Danke.
    Gibts eigentlich eine Möglichkeit Dialoge aus Excel besser anzusteuern ?
    Habe eine Exceldatei die ich Starte und Makros beim entsprechenden Dialog aktiviere. Danach kommt ein kleines Fenster hoch, wohl aus Excel bzw. dem Makro, mit dem Titel Microsoft Excel und zwei Buttons Ja/Nein
    Laut Window Info hat der gewünschte Button die ID 6 sowie den Text &Ja

    Code
    WinWait("Microsoft Excel","Möchten Sie die Onlineaktualisierung durchführen?","")
    WinActivate("Microsoft Excel","Möchten Sie die Onlineaktualisierung durchführen?")
    ControlClick("Microsoft Excel","Möchten Sie die Onlineaktualisierung durchführen?",6)

    Wobei ich also extra auf das Fenster warte, ein Teil des beinhalteten Text zur Identifizierung angebe und das Fenster noch einmal aktiviere, geht mein Click nicht zu dem entsprechenden Button. Aktiv ist das Fenster, hab aber den Eindruck ControlClick bzw. auch WinActivate/Wait finden es nicht, da das ganze Programm Excel ja einen identischen Titel hat

  • Text aus Class Edit lesen und in anderes Feld schreiben

    • SmilingStar
    • 23. Februar 2010 um 11:20
    Zitat von chip

    So

    [autoit]


    $var = ControlGetText("[CLASS:Notepad]", "", "Edit1")
    ControlSetText("[CLASS:Notepad]", "", "Edit2", $var)

    [/autoit]

    oder auch so

    [autoit]


    ControlSetText("[CLASS:Notepad]", "", "Edit2", ControlGetText("[CLASS:Notepad]", "", "Edit1"))

    [/autoit]

    geht beides.

    Das funzt, Danke.
    Mal ne Frage zu ControlClick:
    mir wird beim Kompilieren und vorher prüfen kein Fehler angezeigt, er führt die gewünschten Clicks aber nicht aus. Ganz als ob er nicht erkennt welchen Button ich meine.

    Code
    ShellExecute ("MeinProgramm.exe")
    
    
    WinWait("Fenstername mit Leerzeichen","",3)
    ControlClick("Fenstername mit Leerzeichen","","[ID:1209]","","","","")
    Winait("Fenstername2","","")
    ControlClick("Fenstername2","","[ID:1101]","","","","")
    ControlClick("Fenstername2","","[ID:1102]","","","","")
    WinWait("[CLASS:WindowsForms10.Window.8.app3]","",3)
    send("{ENTER}")


    Wenn ich den Schritt zu Fenstername2 selbst ausführe, geschieht der erste Control Click auf die ID 1101 - es könnte aber auch das ENTER sein.
    Ist die Codierung für die ControlID überhaupt Richtig ? Hab mir via AutoIt v3 Window Info im Reiter Control die numerische Zeichenfolge unter ID kopiert.

  • Text aus Class Edit lesen und in anderes Feld schreiben

    • SmilingStar
    • 23. Februar 2010 um 08:27
    Zitat von chip

    Mit

    [autoit]

    ControlSetText

    [/autoit]

    und fals das nicht gehen sollte mit:

    [autoit]

    ControlSend

    [/autoit]

    Vielleicht ne ganz blöde Frage aber wie schreib ich jetzt mit controlSetText den vorher mit ControlGetText erhaltenen Text ? ?(
    Setz ich vor ControlGetText ein Local $Variablenname = um somit einen Bezugswert zu bekommen und gebe diese Variable dann im ControlSetText im Bereich "new Text" ein ?

  • Text aus Class Edit lesen und in anderes Feld schreiben

    • SmilingStar
    • 23. Februar 2010 um 08:07
    Zitat von AutoBert

    Hallo SmilingStar,

    falls es sich bei beiden Controls um eigene in deinem Skript handelt vewende GuiCtrlRead, ansonsten schaue dir auch die Hilfe zu ControlGetText bzw. ControlCommand an,

    mfg (Auto)Bert

    Nein, handelt sich in dem Fall um Felder in einer externen Anwendung, die ich mit meinem Script starte.
    Wenn ich ControlGetText richtig verstehe, nenne ich dort wie gewohnt den Titel des Fensters und unter ControlID dann das gewünschte Feld ? Also in meinem Fall das Feld der Class Edit mit dem ClassnameNN Edit1
    Wie schreib ich den Text dann in ein anderes Feld ?

  • Daten in Excelfeld schreiben

    • SmilingStar
    • 22. Februar 2010 um 18:10
    Zitat von funkey

    Schau dir folgende Befehle an:
    _ExcelBookOpen _ExcelSheetActivate _DateAdd _ExcelWriteCell

    Wunderbar, genau das Ergebnis was ich wollte. Danke

    Noch eine Frage: Beim Start meiner Exceldatei bekomm ich die Frage, ob Makros aktiviert werden sollen. Gibts dafür in der Excel.au3 auch einen passenden Befehl oder müsst ich das anders lösen ?

  • Daten in Excelfeld schreiben

    • SmilingStar
    • 22. Februar 2010 um 17:11

    Hallo

    Folgendes Anliegen:
    Ich habe per ExcelBookOpen eine bestehende Exceldatei geöffnet. In dieser möchte ich nun automatisch in einer bekannten Zelle einen Wert ändern. Wie genau mach ich das ?
    Gibt es eine Möglichkeit den zu schreibenden Wert, ein Datum, durch sowas wie Heute+14 Tage zu "berechnen" ?
    Um überhaupt die entsprechende Zelle zu beschreiben, müsst ich darauf warten, dass ein bestimmtes Tabellenblatt aktiv ist, kann ich hier auch sowas wie WinWaitActive machen ?

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™