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

  • IE Browserfenster - Inhalt einer Zelle auslesen

    • SmilingStar
    • 20. März 2011 um 11:51

    Hallo

    Hoffe mal wieder auf Eure Hilfe.
    Ich hab ein IE-Fenster, in welchem Zahlungseingänge und Rechnungen in Tabellenform dargestellt werden.
    Am Ende der Tabelle hab ich in einer Zeile den Begriff Summe: und dann zwei Zellen rechts daneben den entsprechenden Wert.

    Den Wert zwei Zellen rechts neben dem Wort Summe: würde ich gern in mein Script auslesen.

    Gibts da irgendeine Chance für ?
    Hab ja schon gesehen das IEDocReadHTML in die Richtung geht aber wirklich schlau geworden bin ich da noch nicht. Vor allem wie ich dann die entsprechende Stelle suche.

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • SmilingStar
    • 1. März 2011 um 18:51
    Zitat von Oscar

    Dann so:

    Spoiler anzeigen
    [autoit]


    #include

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

    $sFilename = @ScriptDir & '\test.txt'
    $sFile = FileRead($sFilename) ; Datei einlesen
    $array = StringRegExp($sFile, '(?s)\[\d+\](.+?)\[\/\d+\]', 3) ; Array erstellen
    ;~ _ArrayDisplay($array)
    $index = 0
    HotKeySet('{F8}', '_SendText')
    HotKeySet('{ESC}', '_End')

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

    While Sleep(100)
    WEnd

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

    Func _SendText()
    Send($array[$index])
    $index += 1
    If $index = UBound($array) Then $index = 0
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
    Alles anzeigen


    Das sieht doch schon sehr schön aus. Dank dir schon mal.

    Um noch nen bissel Größenwahn rein zu bringen:
    Hab die Ausgabe je nach Hotkey auf die einzelnen "Zellen" des Array beschränkt.

    [autoit]

    Send($array[0])

    [/autoit]


    Besteht die Chance, den Inhalt der entsprechenden "Zelle" des Array komplett auszugeben und nicht wie bei Send üblich, als würde ich gerade jeden Buchstaben einzeln tippen ?
    Also ganz so als wenn ich einen Text in der Zwischenablage speichere und dann per STRG+V einfüge.

    Ich befürchte dafür müsst man sich seine eigene Zwischenablage basteln ?! :huh:

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • SmilingStar
    • 1. März 2011 um 18:28
    Zitat von Oscar


    Wie können wir das wissen, wenn wir die Textdatei nicht haben? ;)

    Du musst halt in die Textdatei irgendeinen "Trenner" einbauen oder, falls der bereits vorhanden ist, diesen zum splitten benutzen.


    Mit Hilfe der Kristallkugel ? :D
    Die Textdatei gibts noch nicht fertig. Will da von mir oft genutzte Textblöcke drin speichern, deren Abstand oder Begrenzung kann ich deswegen frei wählen.
    Wenn ich die einzelnen Blöcke wie folgt mit [1][/1],[2][/2] etc. "Trennen" würde, wie mach ich dann das mit dem Splitten ?

    [1]
    Textblock 1
    Zeile 1
    Zeile2
    Zeile3
    Leerzeile
    Zeile 5
    [/1]

    [2]
    Textblock 2

    Zeile 1
    Zeile2
    Leerzeile
    Zeile 4
    Zeile 5
    [/2]

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • SmilingStar
    • 1. März 2011 um 18:08
    Zitat von Oscar

    Willst Du denn den Text komplett ausgeben?
    Ich vermute mal (Kristallkugel befragt :D ) nur zeilenweise:

    Spoiler anzeigen
    [autoit]


    $sFilename = @ScriptDir & '\dateiname.txt'
    $sFile = FileRead($sFilename) ; Datei einlesen
    $array = StringSplit($sFile, @CRLF, 3) ; am Zeilenende splitten = Array erstellen
    $index = 0
    HotKeySet('{F8}', '_SendText')
    HotKeySet('{ESC}', '_End')

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

    While Sleep(100)
    WEnd

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

    Func _SendText()
    Send($array[$index])
    $index += 1
    If $index = UBound($array) Then $index = 0
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
    Alles anzeigen


    Wenn du mit dem "Text komplett ausgeben" die ganze Datei meinst, dann nein.
    Soweit ich bei deinem Beispiel hinter steige, würde der nur einzelne Zeilen ausspucken.
    Ich habe in der Textdatei aber mehrere Textblöcke mit unterschiedlicher Zeilenmenge.
    Sinngemäß:

    Textblock 1

    Zeile 1
    Zeile2
    Zeile3
    Leerzeile
    Zeile 5

    Textblock 2
    Zeile 1
    Zeile2
    Leerzeile
    Zeile 4
    Zeile 5

    Wie mach ich ihm dann klar, wo ein Textblock endet ?

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • SmilingStar
    • 1. März 2011 um 18:00
    Zitat von AndyTR

    Was ist denn mit "an die Cursorposition liefen" gemeint?

    Soll in ein Input geschrieben werden (Send), das Du mittels Maus fokussiert hast, oder eine Textausgabe an Mausposition (bsplw. Tooltip)?

    Der Text soll an der Cursorposition, nicht der Mausposition, ausgegeben werden. Wie es grundsätzlich auch Send macht.
    Die Ausgabe soll passieren, ohne dass das Script selbst ein Fenster etc. fokussiert.
    Ich klicke also selbst in das entsprechende Feld. Hoffe das ist zu verstehen :S

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • SmilingStar
    • 1. März 2011 um 17:43

    Hallo zusammen

    Hoffe mir kann jemand bei meinem kleinen Problem helfen.

    Ich habe in einer einfachten txt-Datei mehrere Textblöcke, die ich per Hotkey an der Cursorposition ausgeben will.
    Theoretisches Beispiel solcher Textblöcke:

    Zitat

    Hier steht ganz doll viel Text
    Und hier noch deutlich mehr
    Noch nen bissel mehr Text

    Und hier steht die letzte Zeile

    Habe mich dafür bereits mit Iniread versucht und eine entsprechende INI aus meiner Textdatei gemacht.
    Mein Quelltext zum einlesen und ausgeben sieht dann wie folgt aus:

    [autoit]

    HotKeySet("{F8}", "_txt1")
    Func _txt1()
    $var = IniReadSection(@ScriptDir & "\meine.ini", "2")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    For $i = 1 To $var[0][0]
    Send($var[$i][1] & @CR)
    Next
    EndIf
    Send($var)
    EndFunc

    [/autoit]

    Hierbei sind für mich aber zwei Probleme entstanden:
    1. Mittels IniRead kann ich scheinbar keine Leerzeilen einlesen und später ausgeben.
    2. Wenn ich den Textblock ausgeben will, befindet sich der Cursor in der Regel in einem Textfeld innerhalb einer auf Java basierenden Anwendung. Diese scheint das Zeichenweise ausgeben per Send nicht zu vertragen.

    Gibt es irgendeine Möglichkeit, die Textblöcke beim Start des Script aus einer Textdatei zu lesen und beim Drücken des Hotkey an die Cursorposition zu "liefern" ?

    Das ganze ohne den Befehl Send
    Am liebsten ähnlich wie beim Einfügen mittels STRG+V - ohne jedoch die Windows-Zwischenablage selbst zu überschreiben.

  • Text in offenem Word-Dokument suchen und ändern

    • SmilingStar
    • 14. Februar 2011 um 20:03

    Bzw. wenn schon die Rede von Cursor setzen ist, wie soll man das ohne MouseClick realisieren ?

  • Text in offenem Word-Dokument suchen und ändern

    • SmilingStar
    • 3. Februar 2011 um 22:33
    Zitat von BugFix

    Das ist nicht ohne weiteres möglich, da Word m.W. Zeilen nicht als Objekte kennt.
    Probier mal ob du den Cursor auf/in den gefundenen Text setzen kannst. Anschließend mit Pos1 - Shift - End die Zeile markieren und mit gewünschtem Inhalt ersetzen.

    Das mit Home-Shift-END die Zeile markieren scheint zu klappen, wenn ich die Kombination als "Ersetz-Argument" + neuen Text sende.
    Wenn ich allerdings in eine zweite Suche gehen will, springt er nicht zum zweiten Treffer, sondern schmiert in in der gleichen Zeile weiter.
    Jemand ne Idee was da falsch läuft ?

    Beispiel

    [autoit]

    $oDoc = _WordDocGetCollection($hand, 0)
    _WordDocFindReplace($oDoc,"gesuchterText",Send("{HOME}+{END}" & "Test"),1,0)
    _WordDocFindReplace($oDoc,"2gesuchterText",Send("{END}+{HOME}"& "Test2"),1 , 0, 0, 0, 0, 0, 0, 1, 1, 0)

    [/autoit]
  • Text in offenem Word-Dokument suchen und ändern

    • SmilingStar
    • 2. Februar 2011 um 22:12

    Dank dir für deine Antwort. WordDocFindReplace funktioniert soweit auch ganz gut.
    Mein Problem ist bei der Variante aber, dass ich teilweise den Inhalt einer ganzen Zeile ersetzen möchte, ohne diesen komplett zu kennen.
    Gibts ne Möglichkeit zum Bsp. vor dem Ersetzen mit Shift+Pos1 an den Anfang der Zeile zu springen ?

  • Text in offenem Word-Dokument suchen und ändern

    • SmilingStar
    • 2. Februar 2011 um 21:20

    Hallo

    Ich suche eine Möglichkeit, in einem offenen Word-Dokument per Hotkey einen definierten Text zu suchen und diesen anschließend zu ersetzen.
    Den exakten Namen des Word-Dokument kann ich hierbei vorher nicht wissen. Daher soll die suche im aktiven Fenster geschehen.
    Jemand eine Idee wie ich das hin bekomme ?

    Die Definition des entsprechenden Hotkey über Hotkeyset und die anschließende Funktion ist mir ja noch klar...

  • Class Edit auf Inhalt prüfen

    • SmilingStar
    • 15. März 2010 um 21:09
    Zitat von XovoxKingdom

    *aus dem Ärmel schüttel*

    [autoit]

    $Title = "";Hier der Titel des Fensters
    $Edit = ""; Hier den Namen der Class z.B. "Edit1"
    While True
    if Controlgettext($Title,"",$Edit) <> "" Then Exitloop
    sleep(10)
    Wend
    MsgBox(0,0,"TEXT")

    [/autoit]
    Alles anzeigen

    Klingt extrem simpel ^^
    Ne Chance sowas auf ein Edit anzusetzen, welcher im Passwordstyle is ?

  • Class Edit auf Inhalt prüfen

    • SmilingStar
    • 15. März 2010 um 20:38

    Ich habe innerhalb einer externen Anwendung, NICHTS das mit AutoIt erstellt wurde, ein Feld der Klasse Edit in welches eine entsprechende Eingabe gemacht wird.
    Diese Eingabe soll NICHT durch AutoIt bzw. mein Script erfolgen.
    Ich möchte die Ausführung des Scripts solange stoppen, bis das entsprechende Feld ein Inhalt hat.
    Gibt es eine Möglichkeit und wenn ja welche, eine Class Edit daraufhin zu prüfen ? Es ist nicht unbedingt wichtig zu erkennen was drin steht, nur OB etwas drin steht. Es muss also nicht ausgelesen werden, was in dem Edit drin steht.,

  • Excel-Datei starten und weitere Befehle trotz Makro ausführen

    • SmilingStar
    • 14. März 2010 um 14:21

    Keiner ne Idee ?

  • Excel-Datei starten und weitere Befehle trotz Makro ausführen

    • SmilingStar
    • 12. März 2010 um 23:02
    Zitat von Xenobiologist

    Also, ich dachte willst ein Excel öffnen xlsm
    und dann kommt automatisch eine Abfrage durch ein Makro.
    Diese Abfrage willst du beantworten mit ja oder nein.
    Richtig?

    Richtig. Ich binde Excel.au3 ein, definiere $oExcel per _ExcelbookOpen(Exceldatei.xls) und öffne damit die Datei
    Wenn ich nun versuche deinen Befehl per $oExcel.Run("VBAProject","{ENTER}") einzubinden, alternativ auch indem ich Enter vorher in eine Variable gebe und diese statt Enter in den Befehl eintrage, erhalte ich beim Ausführen keine entsprechende Reaktion. Stattdessen kommt von Autoit im Log nur folgendes:

    Code
    >Running:(3.3.4.0):C:\Programme\AutoIt3\autoit3.exe "C:\Dokumente und Einstellungen\Chris\Eigene Dateien\Downloads\exceltest.au3"	
    C:\Dokumente und Einstellungen\Chris\Eigene Dateien\Downloads\exceltest.au3 (4) : ==> The requested action with this object has failed.:
    $oExcel.Run("VBAProject","{ENTER}")
    $oExcel.Run("VBAProject","{ENTER}")^ ERROR

    Auf diesen Makronamen bin ich gekommen, indem ich in Excel mit Rechts auf das Tabellenblatt geklickt und dann Code anzeigen gewählt habe. Dort findet sich links dann als erstes VBAProject(Dateiname.xls)

  • Excel-Datei starten und weitere Befehle trotz Makro ausführen

    • SmilingStar
    • 11. März 2010 um 22:43
    Zitat von Xenobiologist

    Versuch mal sowas $oExcel.Run("NameDesMakro",$parameter)

    Hm... ich will ja nicht das integrierte Makro starten sondern die Exceldatei selbst oder hab ich da jetzt was falsch verstanden ?

  • Excel-Datei starten und weitere Befehle trotz Makro ausführen

    • SmilingStar
    • 11. März 2010 um 22:22
    Zitat von Xenobiologist

    Kann man es selbst mal testen`?

    Du meinst ob ich die Excel-Datei verschicken könnt ? Da dort Firmendaten drin stehen leider nein.
    Meinem Verständnis nach würde es reichen, wenn man mit dem öffnen der Excel-Datei den Befehl beenden könnte. :huh:

  • Excel-Datei starten und weitere Befehle trotz Makro ausführen

    • SmilingStar
    • 11. März 2010 um 22:01

    Ich hab bei mir eine Exceldatei die ich mit ExcelbookOpen öffne/starte.
    Darin enthalten ist ein Makro welches mir direkt eine entsprechende Abfrage mit Ja/Nein liefert.
    Ich würde diesen Dialog gern bedienen, komme aber weder mit ControlClick noch mit MouseClick ran, da die entsprechenden Befehle aus dem Script erst ausgeführt werden, wenn das Makro "durch" ist.Gleiches gilt für simple SEND-Befehle
    Jemand ne Idee ?
    Das Makro selbst umzuschreiben ist nicht möglich bzw. gewünscht

  • MouseCoordMode im Scriptverlauf ändern/Excel-Makro

    • SmilingStar
    • 11. März 2010 um 09:19
    Zitat von BugFix

    Wenn du den Mode änderst, wird der alte Mode zurückgegeben. Den speicherst du und verwendest ihn später zum Zurücksetzen:

    [autoit]

    ; neue Option aktivieren und den alten Wert abfangen
    $Opt_old = Opt('.....', 'neu_Wert') ; <== bei allen Optionen identischer Vorgang

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

    ; zurücksetzen auf alten Wert
    Opt('.....', $Opt_old)

    [/autoit]


    Das hab ich jetzt nicht ganz verstanden, insbesondere deinen Code. Also zu Beginn meines Scripts definiere ich meine MouseCoordMode-Option. Der läuft fröhlich durch und dann möchte ichs ändern. Mit deiner ersten Codezeile setzt du den neuen MouseCoordMode und schiebst das Ergebnis gleichzeitig in die Variable $Opt_old

    Und wenn ich den alten MouseCoordMode haben möchte, setz ich deine zweite Zeile ? Ist $Opt_old dann nicht aber mit dem neu gesetzten Wert "beschrieben" ? Bzw. wenn ich nicht zurück auf den alten Mode möchte, kann ich die Zeile doch auch weg lassen oder ?

  • MouseCoordMode im Scriptverlauf ändern/Excel-Makro

    • SmilingStar
    • 11. März 2010 um 08:02

    Moin

    Ich hab bei mir zu Beginn des Scripts MouseCoordMode auf 2 gesetzt, damit ich entsprechend innerhalb der anvisierten Fenster klicken kann.

    Nun hab ich jedoch eine Exceldatei, in welcher durch ein Makro ein Abfrage-Fenster mit Ja/Nein gestartet wird. Dieses befindet sich immer Mittig auf dem Bildschirm, ist als Microsoft Excel betitelt und kann mit ControlClick scheinbar nicht anvisiert werden - entsprechende Befehle werden in Excel erst nach Ausführung des Makros ausgeführt.

    Daher die Frage, kann ich innerhalb des Scripts MouseCoordMode erneut ändern, damit er die Koordinaten auf Bildschirmbasis verwendet ? Also nach Ausführung der anderen Schritte wieder auf 0 gehen

  • JavaScript und ControlClick

    • SmilingStar
    • 5. März 2010 um 12:27
    Zitat von SEuBo

    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.

    Alles anzeigen

    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

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™