Datei auswählen mit veränderlichem Namen

  • Hallo Zusammen,

    ich möchte eine Datei aus einer Liste auswählen. Dabei handelt es sich um eine Liste wie in einem "Öffnen"-Fenster wie es z.B. bei MS Excel oder Word der Fall ist.
    Die Dateinamen sind z.B. wie folgt aufgebaut:
    119TEZ75_LEG.mjb
    75TLZ75_LEG.mjb
    ...

    Ich möchte die Datei anklicken bzw. markieren und dann anschließend auf Öffnen.

    Der erste Teil vor dem "_" ist der relevante Teil für mich. Diesen String habe ich zuvor in einer Variablen "$typ" hinterlegt bzw. ist in $typ der String 119TEZ75 oder 75TLZ75 hinterlegt.
    Da es sich um keine Textdateien handelt kann ich schon mal nicht mit dem FileOpen Befehl arbeiten.

    Mit ControlSend und ControlClick habe ich es auch nicht hinbekommen. Wobei ich glaube das ControlSend der richtige Befehl ist.

    Ausprobiert habe ich es wie folgt:

    AutoIt
    ControlSend("Öffnen","", "[CLASS:Edit; INSTANCE:1]", $typ & "{ENTER}")

    Also meine Frage:

    Wie kriege ich es hin, dass die Dateinamen mit der Variable $Typ verglichen werden und anschließend ausgewählt werden?


    Ich danke für eure Hilfe.

    Gruß

    Denis

  • Hi Oscar,
    also ich probier mal das ganze zu beschreiben!

    Im Grunde genommen bin ich dabei einen Beschriftungslaser zu "automatisieren".

    Dieser Laser wird über eine mitgelieferte "Runtime" -Software gesteuert, welche vom Benutzer bedient werden kann. Hier kann ich eine Losgröße für Aufträge angeben, den Beschriftungsinhalt sowie Aufträge laden. Und genau dies sollte alles automatisiert werden.

    Mit AutoIT habe ich dann eine Datei erstellt, welche aus einer Textdatei (wird von einer DB gefüttert) die benötigten Daten zieht, also Losgröße etc. Und eben auch den Typen. Die Übergabe der Daten an die Runtime-Software klappt soweit, bis auf eben den Typen. Die anderen Daten (Losgröße, Beschriftungsinhalt) werden von der Runtime-Software abgefragt, hier schreib ich die Daten also einfach in ein Feld rein und lasse dann auf OK drücken.
    Bei dem Typen ist es so: Der Typ bestimmt den zu ladenden Auftrag. Die Aufträge sind gespeicherte Layouts, die in einem Ordner gespeichert sind. Bis jetzt habe ich es geschafft mit AutoIT den entsprechenden Ordner-Pfad zu öffnen, mit einem Control-Send Befehl. mun bin ich in dem Ordner und schaffe es nicht den entsprechenden Auftrag zu laden. Um ihn zu laden muss ich also aus der Liste die Datei finden, deren Name, bzw. ein Teil davon in der Variablen $Typ hinterlegt ist (siehe erster Post). Diese will ich dann anklicken und laden.

  • Bei dem "Öffnen" Fenster von Word klappt folgende Methode prima bei mir:

    AutoIt
    $typ = "119TEZ75"
    $hWnd = WinGetHandle("Öffnen")
    WinActivate($hWnd)
    ControlSend($hWnd,"","[CLASS:Edit; INSTANCE:1]", $typ & "_LEG.mjb")
    ControlClick($hWnd,"","[CLASS:Button; INSTANCE:1]")

    (Allerdings nur wenn alle Dateien mit "_LEG.mjb" enden)

    Vielleicht solltest du auch sagen um welche Software es geht, vielleicht kann man die auch einfacher automatiesieren
    z.B. über Paramerter.

    mfg
    Zeitriss

  • Bei der Software handelt es sich um MarkUS-Runtime, ist vomHerstellern des Lasers. Was ist Parameter? Kenne mich da leider nicht allzu gut aus!


    Gesendet von meinem SM-A300FU mit Tapatalk

  • Wenn das hier das richtige ist: https://www.tlm-laser.com/laser-products…arking-software
    Gibt es dort: Remote control options for greater automation and productivity (TCP/IP, Profibus, serial communication)
    Man kann also bequem alles per TCP (Netzwerk-befehle) an das Programm schicken. Dann wird es dort verarbeitet.
    Kommt man allerdings nur dran, wenn man die Software hat, glaub ich.

    Man baut dann eine TCP-Verbindung auf (in deinem Fall zu localhost). Dann sendest du an das Programm, was es machen soll (wie wird in der Dokumentation des Programms stehen), und es macht dann alles.
    Theoretisch kannst du dir dann auch ne App schreiben, die das ganze vom Handy aus macht, uvm.

  • Hallo Zusammen,

    @Kanashius: Vielen Dank für deinen Rat. Leider bleibt nur aktuell nicht die Zeit um mich aktuell damit zu befassen, aber trotzdem Danke für den Tipp. Vielleicht wenn ich bisschen mehr Zeit habe.

    @Zeitriss: Danke für die Hilfe! Es klappt fast wunderbar!

    Habe jedoch noch ein kleines Problem bei der Geschichte.
    Der Typ, also 119TEZ75, wird leider klein ausgegeben, also 119tez75. Die Endung "_LEG.mjb" wird mir leider auch in klein ausgegeben und der Unterstrich garnicht erkannt, sondern ein Bindestrich gemacht, so dass sich folgende Situation ergibt: 119tez75-leg.mjb.
    Hat jemand ne Idee, was da noch falsch läuft? Alternativ könnte ich die Dateinamen natürlich umändern.

  • Hi,

    Tritt das Problem auch bei anderen Programmen auf dem PC auf? z.B. wenn du einen Text in das Notepad schreiben lässt?
    Wenn ja dann steig auf ControlSetText um.

    Ansonsten kannst du auch das folgende probieren:

    Code
    $sTyp = "119TEZ75"
    $sFilename = $sTyp & "_LEG.mjb"
    $sPattern = "([A-Z_!§$%&\(\)\{\}\;'])"
    $sFilename = StringregexpReplace($sFilename ,$sPattern ,"+$1")
    $hWnd = WinGetHandle("Öffnen")
    WinActivate($hWnd)
    ControlSend($hWnd,"","[CLASS:RichEdit20W; INSTANCE:2]", $sFilename)
    ControlClick($hWnd,"","[CLASS:Button; INSTANCE:1]")

    Vielleicht klappt es.

    mfg

    Zeitriss

  • Hi
    bis jetzt ist mir das Problem nur an dieser Stelle aufgefallen!

    Dein Vorschlag hat super funktioniert und mir sehr weitergeholfen!

    Danke

    Gesendet von meinem SM-A300FU mit Tapatalk