Blutige Anfängerin

  • Hallo ich muss mich jetzt langsam in das Thema AutoIT skripting einarbeiten um für meine Firma ein paar kleine Fehlerquellen in bereits laufende Dienste zu finden und dadurch monitoren.
    Ich bin aber FISI und wie das so ist, haben die meisten Probleme aller Art AE ähnlichen Dingen. Dies ist auch der Fall bei mir. Aber ich nehme mich mal der Sache von Grund auf an.
    Jetzt habe ich mich mal versucht:

    -------------
    BlockInput (1)

    Run("notepad.exe")

    WinWaitActive("Unbenannt - Editor")

    Send("Dies ist ein Text" & @CRLF & "This is a new line! ")

    WinClose("Unbenannt - Editor")

    WinWaitActive("Editor")

    Send("!S")

    WinWaitActive("Speichern unter")

    BlockInput (1)
    ------------

    Nun möchte ich das aktive "Speichern unter Fenster" auch benutzen. Demnach fehlen mir die Schritte die Datei zu benennen und auch auf speichern zu drücken:
    Finden konnte ich Möglichkeiten wie

    ---------- ;$text = ("MiasErsterVersuch")
    ;$ort = FileSaveDialog("MiasErsteFileCreation","\\HE111163e001\a21983527$\Home\Data\aAutoIT",".txt" )

    ;FileWrite ($ort,$text)---------- ODER

    -------ControlSetText("Speichern unter", " ", 48, @YEAR & @MON & @MDAY)-------

    Aber das hat auch nicht funktioniert, weil sich mir einiges nicht erschließt und ich ja eigentlich nocheinmal ein send schicken will. Dann hatte ich ein Skript gefunden mit dem man den Mausstandort finden konnte, der mir dann auch ausgegeben wurde. Als ich dann versucht habe diesen zu benutzten hat es auch nichts gebracht.

    Kann mir einer Helfen? Ihr werdet bestimmt öfters etwas von mir hören :thumbup:

    Liebe Grüße

    Mia

  • Hallo @mdoerrer,

    Ich habe statt der Lösung vorab die Frage, wozu das genau dienen soll. Mit AutoIt kannst du sehr gut auf Textdateien zugreifen und sie direkt anlegen/bearbeiten/kopieren/verschieben. Daher scheint mir die Automatisierung von Notepad eigentlich als der falsche/umständliche Ansatz.

    (Das oben beschriebene könntest du nämlich ganz flott mit FileWrite abwickeln.)

    Grüße autoiter

  • Die Frage ist doch was du für deine eigentliche Aufgabe benötigst. Grundsätzlich bietet dir Autoit zahlreiche Möglichkeiten Dinge zu automatisieren.

    - Du kannst Maus und Tastatureingaben emulieren
    - Du kannst sichtbare und unsichtbare Fenster / Programme steuern (entweder direkt oder mit Maus/Tastatur Emulation)
    - Du kannst aber Autoit auch wie andere Programmiersprachen nutzen und z.B. Textdateien direkt bearbeiten, eine eigene GUI und vollwertige Windows Software erstellen
    - Du kannst alle Windowsfunktionen und Einstellungen automatisiert auslesen / ändern (z.B. über die Registry, WMI, DLL Calls usw.)
    - Du kannst die meisten Programme direkt über deren API automatisieren ohne auf Fenster, Maus und Tastatur Funktionen angewiesen zu sein
    - Du kannst grafisch anspruchsvollere GUIs mit GDI und sogar in 3D mit diversen Erweiterungen realisieren
    - Du kannst sogar Assemblercode zur Ausführung bringen
    - uvm.

    Natürlich kannst du jetzt mit allem mal rumprobieren, aber so ganz ohne konkrete Aufgabe und Ziel wirst du denke ich mit der Fülle an Möglichkeiten überfordert sein.

    Ich empfehle dir daher dir eine einfache Aufgabe zu setzen, zu schauen wie du dies deiner Meinung nach realisieren kannst und dann ggf. hier nachfragen wie wir das realisieren würden. Sehr wahrscheinlich wird man dir dann die Vor- und Nachteile deiner Lösungswege aufzeigen und dich ggf. auf alternative Funktionen hinweisen die besser geeignet sind um die Aufgabe zu lösen.

    Um zu deinem Notepad Beispiel zurückzukommen:

    Die Funktion FileSaveDialog() ist nicht zur Automatisierung von externen Programmen gedacht, sondern sie stellt dir einen Standard Windows "Speichern" Dialog für deine eigene Software bereit. Da du Notepad automatisieren willst musst du den "Speichern" Dialog von Notepad aufrufen und entsprechend ausgefüllt absenden. Hierfür kann entweder die Tastenkombination STRG+S an das Fenster gesendet werden oder aber du verwendest die Funktion WinMenuSelectItem() um den Punkt "Speichern" im Dateimenü auszuwählen.

    Letzlich ist die Automatisierung von Notepad aber nicht wirklich die bevorzugte Methode um Textdateien zu bearbeiten (wurde oben ja schon erwähnt). Hierzu verwendet man normalerweise die "File*" Funktionen und bei Bedarf diverse "String*" Funktionen. Evtl. wirst du hierbei auch die Nutzung der "Array*" Funktionen in Erwägung ziehen.