Echt genial!!
Funktioniert!!
vielen Dank!!
Echt genial!!
Funktioniert!!
vielen Dank!!
Hallo Autoit Gemeinde!
Ich bin gerade dabei per Autoit einen kleinen Formelinterpreter zu schreiben, der in erster Linie mal einen String nach Vaiablen durchsucht und Operanten filtert.
...In einen zweiten Moment wird er dann auch berechnet...
Diese Strings mit Formeln würde so ähnlich aussehen:
local $String = "IF D>=50 THEN 3 ELSE 8"
in dem Fall, würde das Script in einem separaten Variablenarray, nach Variable "D" suchen, und dessen Wert z.B. "20" in der Formel mit der Variable tauschen.
Das Ganze wird in ein Array geschrieben und später weiterverarbeitet.
So Weit So gut.
nun kommt aber der Haken:
bei einem "=" gibt es leider mehrere Möglichkeiten, da ein "=" auch in einem ">=", "=>" und "==" vorkommen kann, gibt es hier einen Fehler.
Das selbe Problem habe ich auch mit folgenden Operatoren : ">", "<", ">=", "=>", "<=", "=<".
leider gibt es dazu noch folgende Schreibweisen, die ich auch nicht unterbinden kann, da diese Formelstrings aus einem externen Programm kommen.
Also einmal mit und einmal ohne Leerstellen, die dann auch an jeder Stelle stehen können.
D = 50
D= 50
D =50
oder
D>=50
D >=50
D >= 50
D>= 50
....
ich brächte hier eine Regex Syntax, die Explizit nach dem jeweiligen Operator sucht, egal ob der mit Leerzeichen von der Variable getrennt ist, oder nicht.
Nur leider höhrt hier meine Logik bezüglich RegEx auf und ich habe keinen Plan, wie man das anstellen sollte...
Kann mir vielleicht jemand helfen?
hier mein bisheriges Script...
#include <Array.au3>
local $Pipe, $sSyntax, $aDelim, $aParts
local $sFormel
$sFormel = "IF D => 50 THEN 1 ELSE 2"
;~ $sFormel = "IF D=>50 THEN 1 ELSE 2"
;~ $sFormel = "IF D<= 50 THEN 1 ELSE 2"
;~ $sFormel = "IF D <=50 THEN 1 ELSE 2"
;~ $sFormel = "IF D=50 THEN 1 ELSE 2"
;~ $sFormel = "IF D=50 THEN 1 ELSE 2"
$Pipe = "|" ;Trennzeichen für Syntax
$sSyntax = "\bIF\b" & $Pipe
$sSyntax = $sSyntax & "\bTHEN\b" & $Pipe
$sSyntax = $sSyntax & "\bELSE\b" & $Pipe
$sSyntax = $sSyntax & "\bAND\b" & $Pipe
$sSyntax = $sSyntax & "\bOR\b" & $Pipe
$sSyntax = $sSyntax & "\bXOR\b" & $Pipe
$sSyntax = $sSyntax & "\bNOT\b" & $Pipe
$sSyntax = $sSyntax & "COS[\\(]" & $Pipe
$sSyntax = $sSyntax & "TAN[\\(]" & $Pipe
$sSyntax = $sSyntax & "SIN[\\(]" & $Pipe
$sSyntax = $sSyntax & "ARCSIN[\\(]" & $Pipe
$sSyntax = $sSyntax & "ARCCOS[\\(]" & $Pipe
$sSyntax = $sSyntax & "ARCTAN[\\(]" & $Pipe
$sSyntax = $sSyntax & "EXP[\\(]" & $Pipe
$sSyntax = $sSyntax & "LN[\\(]" & $Pipe
$sSyntax = $sSyntax & "MOD[\\(]" & $Pipe
$sSyntax = $sSyntax & "PREC[\\(]" & $Pipe
$sSyntax = $sSyntax & "ABS[\\(]" & $Pipe
$sSyntax = $sSyntax & "[\\)]" & $Pipe ;Klammer zu ")"
$sSyntax = $sSyntax & "\b=\b" & $Pipe
$sSyntax = $sSyntax & "\b<\b" & $Pipe
$sSyntax = $sSyntax & "\b>\b" & $Pipe
$sSyntax = $sSyntax & "<=" & $Pipe ;suche ohne Trennstring (kann auch ohne Leerzeichen an einer Variable hängen
$sSyntax = $sSyntax & "=>" & $Pipe ;suche ohne Trennstring (kann auch ohne Leerzeichen an einer Variable hängen
$sSyntax = $sSyntax & ">=" & $Pipe ;suche ohne Trennstring (kann auch ohne Leerzeichen an einer Variable hängen
$sSyntax = $sSyntax & "<>" & $Pipe ;suche ohne Trennstring (kann auch ohne Leerzeichen an einer Variable hängen
$sSyntax = $sSyntax & "[+]" & $Pipe
$sSyntax = $sSyntax & "[-]" & $Pipe
$sSyntax = $sSyntax & "[:;?@*/^]" ;alle Mathematischen Operanten zwischen zwei Werten
$aDelim = StringRegExp($sFormel, $sSyntax, 3 ); Extrahiert die Syntax aus der Formel und schreibt die Werte in den String
_ArrayDisplay($aDelim)
;~ MsgBox("","", $aDelim)
Vielen vielen Dank!!!
hast mir echt geholfen!!
Hallo,
ich lese per Autoit mit der Funktion "FileReadLine" sehr große Textdateien ein und schreibe diese in ein Array, um damit per Autoit-Gui weiter zu arbeiten.
Nun sind diese Textdateien leider sehr groß und das Einlesen dauert mehrere Minuten, da unter anderem der PC an dem das ganze später laufen sollte, nur eine alte WinXP Maschine 32bit ist, diese kann ich aber leider nicht tauschen....
Hat jemand vielleicht eine Idee wie man dieses einlesen und trennen der Strings beschleunigen könnte? Mit dem Trennen meine ich, dass ich jede Zeile nach vorkommenden "=" mit "StringSplit" in eine separate Spalte des Array einlese.
Komischerweise funktioniert die dazu passende Gui nach dem einlesen sehr flüssig, aber da ist die Datei ja schon im Array bzw. im RAM
Die Dateien haben im Durchschnitt zwischen 20000-100000 Zeilen und sind mehrere MB groß.
Danke für jeden Vorschlag!!!
Func _GetLinesToArray($hFilePfad, ByRef $obj)
Local $i = 0, $line, $aSplit, $bSplit[4]
Local $CountLines
Global $Delimiter1 = '=', $Delimiter2 = '"'
Local $option = 0; "$Delimiter2" am Anfang und am Ende des Strings abschneiden (kann zu Fehlern führen)
;~ MsgBox("262144","",$hFile)
If $hFilePfad = -1 Then
MsgBox("262144", "Fehler", "Konnte Datei nicht öffnen.")
Return False
Else
$CountLines = _FileCountLines($hFilePfad)
ReDim $obj[$CountLines + 1][3]
For $i = 1 To $CountLines
;~ MsgBox("262144",$i,$CountLines)
$line = FileReadLine($hFilePfad, $i)
If @error = -1 Then
MsgBox("262144", $i, "Fehler!! - ExitLoop")
ExitLoop
ElseIf @error = 1 Then ;wenn kein $Delimiter gefunden wurde
MsgBox("262144", $i, "Fehler!! - ContinueLoop")
ContinueLoop
Else
$aSplit = StringSplit($line, $Delimiter1) ;2 Spalten im Array: 1=Wert vor dem $Delimiter, 2= Wert danach
;~ redim $bSplit[4];array vergrößern
If $aSplit[0] >= 2 Then ;= wurde öfter als einmal gefunden
$bSplit[0] = $i
$bSplit[1] = $aSplit[0];Anzahl Treffer
$bSplit[2] = $aSplit[1]
If $aSplit[0] = 2 And $aSplit[2] = "" Then
$bSplit[3] = $Delimiter1 ;wird keine Zeichen nach einem $Delimiter gefunden, gehöhrt diese mit zum Text
Else
$bSplit[3] = StringTrimLeft($line, StringLen($aSplit[1]) + StringLen($Delimiter1)) ;= und Folgetext gemeinsam
EndIf
If $option = 1 Then
If StringLeft($bSplit[3], 1) = $Delimiter2 Then ; Wenn das erste Zeichen ein "=" ist
$bSplit[3] = StringTrimLeft($bSplit[3], 1) ;löscht erstes Zeichen, wenn ein "
EndIf
If StringRight($bSplit[3], 1) = $Delimiter2 Then ; gibt letztes Zeichen zurück
$bSplit[3] = StringTrimRight($bSplit[3], 1);löscht erstes Zeichen, wenn ein "
EndIf
EndIf
Else
$bSplit[0] = $i
$bSplit[1] = $aSplit[0];Anzahl Treffer
$bSplit[2] = $aSplit[1]
$bSplit[3] = ""
EndIf
EndIf
;~ DebugArray($bSplit,"$bSplit")
$obj[$i - 1][0] = ""
$obj[$i - 1][1] = $bSplit[2]
$obj[$i - 1][2] = $bSplit[3]
Next
EndIf
;~ MsgBox("262144","test",$hFilePfad)
;~ DebugArray($obj,"$obj")
FileClose($hFilePfad) ;Schließe Dateizugriff:
EndFunc ;==>_GetLinesToArray
GEIL!!
funktioniert!
#include <MsgBoxConstants.au3>
Example()
Func Example()
; The values are the same so the expression is True
MsgBox($MB_SYSTEMMODAL, "Result: 1=1", (1 = 1) ? "True!" : "False!")
; The values are not the same so the expression is False
MsgBox($MB_SYSTEMMODAL, "Result: 1=2", (1 = 2) ? "True!" : "False!")
EndFunc;==>Example
DANKE!!
Hat jemand vielleicht eine ähnlich elegante Lösung mit "IF THEN ELSE" in einer Formel umzugehen?
Hey!!
ehrlich gesagt, hab ich bis gerade vorhin nicht gewusst, dass Execute auch rechnen kann. Ich habe mit dem Befehl immer nur nach Zeichen gesucht.
Danke für den super Tipp!!
Ich dachte zwar schon mal an Execute, aber immer mit der Meinung, dass ich die Zeichen aussortieren und an ein Array übergeben kann, und nachher noch
eine eigene UDF schreiben muss, die die komplette Algebra nachbildet...da hätte ich ich leider graue Haare bekommen ...
Außerdem ist die ganze Execute Syntax wohl eher was für den Berufsinformatiker, als für den kleinen Hobbyscripter
Nur verstehe ich jetzt aber nicht mehr, wozu es einen solchen au3int-Interpreter überhaupt gibt, wenn das berechnen ja auch sonst möglich ist...
...aber mal egal - vielen Dank für deine schnelle Antwort!!!
----
sollte trotzdem jemand die Lösung für die erste Variante haben, wäre ich auch froh, dass ich das mal kapiere...
Matthias
Hey!!
hat jemand von euch vielleicht eine Idee, wie ich den "au3int v1.0.2.10" Interpreter in ein *.au3 einbinden und verwenden kann?
Ziel ist es, einen String mit einer Formel (z.B. 10*(2+8)) an die compilierte Interpreter-Exe zu senden, um das berechnete Ergebnis zurückzubekommen, um damit weiter im *.au3 weiterzuarbeiten.
Quelle: http://code.google.com/p/au3int/
leider habe ich keine Ahnung, wie ich diese Exe einbinden kann, da ich einfach die Befehle aus dem Helpfile nicht verstehe:
Au3Int.exe [/ErrorStdOut] /AutoIt3ExecuteScript "file" [params ...]
or
Au3Int.exe [/ErrorStdOut] /AutoIt3ExecuteLine "command line"
"command line" oder "params" stehen sicherlich für die Formel (10*(2+8)) aber es funktioniert einfach nicht.
mein jetziger Versuch scheitert leider:
#include <MsgBoxConstants.au3>
local $sBEFEHL, $sSCRIPTPFAD, $test
$sSCRIPTPFAD = "D:\temp\lib\Au3Int.exe"
$sBEFEHL = "10*(2+8)"
$test = Run(@AutoItExe & ' /AutoIt3ExecuteLine ' & $sSCRIPTPFAD & ' ' & $sBEFEHL)
msgbox("","",$test)
beim Befehl "AutoIt3ExecuteScript" habe ich noch weniger Ahnung...
vieln Dank für Eure Hilfe!!
Matthias
Hallo da draußen!
ich habe mal ne Frage, ob jemand eine Idee hat, wie man es Anstellen könnte, ein Treeview mit mehreren Spalten (inkl. Icon) zu bauen?
bisher habe ich immer nur Listview in Autoit verwendet, da es anscheinend keine Standardlösung per Treeview gibt.
Heute habe ich aber das hier im Netz gefunden. (siehe Anhang) Nur ist das leider nicht für Autoit verfügbar...
(http://www.codeproject.com/Articles/23746…ew-with-Columns) leider aber nicht für Autoit.
es geht darum ein 2d Array zu visualisieren...was mit einem Treeview viel übersichtlicher aussehen würde...
bin um jeden Lösungsansatz dankbar!!
Grüße
Matthias
vielen Dank!!
vielen Dank für eure Infos - muss ich mir noch anschauen...
Techmix: ein Beispiel wäre sehr geil, denn drehbar ist natürlich noch besser!!!
Grüße!
Hallo AutoIt Gemeinde,
Da ich für meine Gui ein Tab mit ToolTip brauche, habe ich mal folgenden Code aus dem Netz geholt und damit ein wenig getüftelt...
...soweit so gut, nur bin ich auf eine mir unerklärliche Situation gestoßen, denn sobald ich den genzen TAB in X bzw. Y verschiebe (50 im Beispiel in Zeile 11),
wird plötzlich der Tab von der Funktion "_GUICtrlTab_HitTest" nicht mehr gefunden. Zu erkennen ist das, da die MsgBox in Zeile 81 nicht mehr aufscheint...
$TABHANDLE = _GUICtrlTab_Create($gui,50, 0, 465, 321, BitOR($TCS_TABS, $TCS_TOOLTIPS))
kann mir jemand die Funktion, bzw. den Fehler erklären, da ich nach Stunden bei Google nicht schlau geworden bin.
Auch mit dem "MouseCoordMode" hat das nicht viel zu tun, da ich dort auch schon alles ausprobiert habe..
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GUITab.au3>
#include <GUITooltip.au3>
Global $arr0[1] = [0], $arr1[1] = [0], $arr2[1] = [0]
Global $activetab = 0 ; default to first tab active
$gui = GUICreate("UDF Tabs Tooltips", 472, 348, 226, 125)
$TABHANDLE = _GUICtrlTab_Create($gui,50, 0, 465, 321, BitOR($TCS_TABS, $TCS_TOOLTIPS))
; Create Tooltiop control
$hToolTip = _GUICtrlTab_GetToolTips($TABHANDLE)
; end create
_GUICtrlTab_InsertItem($TABHANDLE, 0, "tab0", -1, 1000)
_GUIToolTip_AddTool($hToolTip, $TABHANDLE, "tab0", 1000)
_GUICtrlTab_InsertItem($TABHANDLE, 1, "tab1", -1, 1001)
_GUIToolTip_AddTool($hToolTip, $TABHANDLE, "tab1", 1001)
_GUICtrlTab_InsertItem($TABHANDLE, 2, "tab2", -1, 1002)
_GUIToolTip_AddTool($hToolTip, $TABHANDLE, "tab2", 1002)
For $i = 1 To 10
_ControlAdd($arr0, GUICtrlCreateLabel("label 0-" & $i, 10, 30 + (25 * ($i - 1))))
GUICtrlSetBkColor(-1, 0xFFFFFF)
Next
For $i = 1 To 10
_ControlAdd($arr0, GUICtrlCreateButton("button 0-" & $i, 70, 30 + (25 * ($i - 1)), 70, 20))
Next
For $i = 1 To 10
_ControlAdd($arr1, GUICtrlCreateLabel("label 1-" & $i, 30, 30 + (25 * ($i - 1))))
GUICtrlSetBkColor(-1, 0xFFFFFF)
Next
For $i = 1 To 10
_ControlAdd($arr1, GUICtrlCreateButton("button 1-" & $i, 90, 30 + (25 * ($i - 1)), 70, 20))
Next
For $i = 1 To 10
_ControlAdd($arr2, GUICtrlCreateLabel("label 2-" & $i, 50, 30 + (25 * ($i - 1))))
GUICtrlSetBkColor(-1, 0xFFFFFF)
Next
For $i = 1 To 10
_ControlAdd($arr2, GUICtrlCreateButton("button 2-" & $i, 110, 30 + (25 * ($i - 1)), 70, 20))
Next
;~ ;; tab0 is default
;~ _ControlState(0, $GUI_SHOW)
;; tab1 is default
_GUICtrlTab_SetCurSel($TABHANDLE, 1)
_ControlState(1, $GUI_SHOW)
$activetab = 1
;~ GUICtrlCreateTabItem("")
GUIRegisterMsg($WM_NOTIFY,"TOOL_WM_NOTIFY")
;End Define Tooltips
GUISetState()
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _ControlAdd(ByRef $array, $cID)
$array[0] += 1
ReDim $array[$array[0] + 1]
$array[$array[0]] = $cID
GUICtrlSetState(-1, $GUI_HIDE) ; hide all controls
Return $cID
EndFunc
Func _TabClick($iTab)
If $iTab == $activetab Then Return
MsgBox("","","tabklick" & $iTab )
_ControlState($activetab, $GUI_HIDE) ; hide
_ControlState($iTab, $GUI_SHOW) ; show
$activetab = $iTab
EndFunc
Func _ControlState($iArr, $iState)
Local $array = Eval("arr" & $iArr)
For $i = 1 To $array[0]
GUICtrlSetState($array[$i], $iState)
Next
EndFunc
; Prog@ndy
Func TOOL_WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
Local $tagNMTTDISPINFOA = "hwnd hWndFrom;int IDFrom;int Code;ptr lpszText;char szText[80];hwnd hinst;uint uFlags;"
Local $tagNMTTDISPINFOW = "hwnd hWndFrom;int IDFrom;int Code;ptr lpszText;wchar szText[80];hwnd hinst;uint uFlags;"
Local $NMHDR = DllStructCreate($tagNMTTDISPINFOW, $lParam)
Local $hWndFrom = DllStructGetData($NMHDR, 1)
Local $IdFrom = DllStructGetData($NMHDR, 2)
Local $Event = DllStructGetData($NMHDR, 3)
Switch $Event
Case $TTN_GETDISPINFOW, $TTN_GETDISPINFO
If $TTN_GETDISPINFO == $Event Then $NMHDR = DllStructCreate($tagNMTTDISPINFOA, $lParam)
If $hwndFrom == HWnd($hToolTip) Then
Local $param = _GUICtrlTab_GetItemParam($TABHANDLE, $IdFrom)
Local $text = _GUIToolTip_GetText($hwndFrom, $TABHANDLE, $param)
;~ ConsoleWrite("tip: " & $IdFrom & ", param: " & $param & @CRLF)
;~ ConsoleWrite("text: " & $text & @CRLF)
DllStructSetData($NMHDR, "szText", $text & Chr(0))
EndIf
Case $NM_CLICK
Local $oldmco = Opt("MouseCoordMode", 2)
Local $mpos = MouseGetPos()
Opt("MouseCoordMode", $oldmco)
Local $idx = _GUICtrlTab_HitTest($hWndFrom, $mpos[0], $mpos[1]) ; get index of clicked tab
If $idx[0] <> -1 Then
_TabClick($idx[0])
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>TOOL_WM_NOTIFY
Hey,
also im Prinzip geht es darum.
Wir erstellen ein STL File als Modell unseres Produktes (stell dir einfach ein Frästeil aus Alu vor). Da dieses Frästeil aber Kundenspezifische Variablen hat (Teilelänge und Bohrungspositionen sind variablen) und wir nicht jedes Teil eigens Zeichnen wollen, habe ich mal ein au3 Script geschrieben, das im original STL File eben diese 2 Werte austauscht. Um daraus dann Zeichnungen zu drucken, bzw. die Änderung zu visualisieren, benutzen wir nach dieser Anpassung noch einen externen STL viewer. Die ganze Systematik ist aber sehr umständlich, wenn man einige dutzent Teile so handhaben muss.
Meine Idee ist es, das bestehende Script mit der Viewerfunktion zu erweitern und so einige Arbeitsschritte zu sparen.
Grüße!!
Vielen Dank für die Info.
..na dann werde ich mich mal an die Arbeit machen.
OpenGL UDFs (2.0) werde ich mir mal genauer anschauen, ansonsten werde ich mal versuchen wie ich Irrlicht verwenden kann...
Hallo autoit Gemeinde,
ich mache mir jetzt schon seit einigen Wochen Gedanken um eine bestimmte Problemlösung. Es geht darum ein live generiertes stl 3d file in einer autoit gui zu visualisieren. Bisher verändere ich die Maße eines 3d Körpers über ein autoit script , brauche aber immer noch einen externen viewer, um das Ergebniss anzuschauen. Durch Zufall habe ich jetzt die irrlicht lib für autoit entdeckt, aber die ist eigendlich für games zuständig. Nach kurzer suche bin ich auf freie libs wie OpenCASCADE, opentk oder salome gestoßen. Im prinzip ideal, da diese allesamt für 3d Visualisierung und Konstruieren, programmiert sind. Nun habe ich momentan noch keine Ahnung, wie oder ob ich so eine Bibliothek in autoit einbinden könnte. Hat vielleicht jemand schon Erfahrung damit? Vielleicht sogar ein Beispiel...
Danke für jede idee
super, genau das habe ich gesucht.
jetzt bekomme ich ein Return, von welcher Datei das Script aufgerufen wird!!!
vielen Dank!!!
Danke für die schnelle Rückmeldung!
das mit der Verknüpfung inkl. Parameter funzt schon, nur muss ich dann zuerst das Programm starten, dann über das Menü/öffnen mein File suchen und öffnen.
Ich bin aber nach der Suche nach einer Lösung wo ich einfach per doppelklick ein File öffnen kann. wie eine *.jpg einfach den Viewer öffnen.
Im Hintergrund soll die besagte Verknüpfung mit Parameter gestartet werden und das Programm öffnet die Datei.
Das mit dem starten der Verknüpfung inkl. Parameter und öfffnen funktioniert als test schonmal, aber eben nur dann, wenn ich in meinem Script genau den Pfad Hardcodiere, wo das File liegt Z.B. C:\temp\test.elx
Um das ganze zu automatisieren habe ich alle *elx mit meiner AutoIt - script - EXE verknüpft und bei einem Doppelklick auf das File startet auch mein Script, nur halt ohne eigenen Filepfad.
Die Lösung wäre, wenn ich (besser das Script ) wissen würde, welches File per Doppelklick gestartet wurde, um diese Info zu übermitteln...
Gibt es da was in der Registry auszulesen - z.b. "last active File"?
vielen Dank im Vorraus!!!
Hallo liebe AutoIt Gemeinde,
ich habe eine Frage zu einem meiner Meinung etwas kniffligen Problem:
Eine unserer Software liegt technisch bedinngt auf einem Netzlaufwerk (keine Installiation). Um diese zu starten, braucht man eine Verknüpfung die außerdem noch Parameter enthält (R:\Cuon.exe /config Default /tmpl Cuon.elx).
Diese Parameter braucht die Software, damit diese auch richtig startet. Mein Problem an der Sache ist, dass Windows (7) verweigert, dass man einen bestimmten Dateityp per "öffnen mit" einer Verknüpfung zuweisen kann. Schon gar nicht ins Netzwerk. Also muss mann immer zuerst die Software mit der Verknüpfung starten, danach per Datei/öffnen das File irgendwo im Nirvana suchen.
Meine Idee ist es, ein Script zu verfassen, und eine Exe zu erstellen. Diese EXE dann irgendwo unter C:/Programme plazieren und dem Dateityp per "öffnen mit" erklären, dass er mit der AutoIt erstellten Exe starten soll.
Per Doppelklick / ENTER usw. soll den Filepfad an AutoIt gesendet werden, und das Script bereitet die Info inkl. Parameter auf und sendet/startet die Verknüpfung mit Dateiname.
Bei der Umsetzung hapert es, da ich keine Ahnung habe, wie ich die Info "wer halt EXE gestartet" an AutoIt übermitteln kann.
Die Parameterübergabe würde ich dann in ein vbs Script auslagern (das denke bekomme ich hin...)
Kann mir hier jemand einen Ansatz geben?
Vielen Dank im Vorraus!!!
Ich möchte mit AutoIt ein Script (später exe) entwickeln, die eine Datei öffne