Misterspeed: Da machst du es dir aus Sicherheitsgründen meines Erachtens viel zu restriktiv...
Folgende Funktion macht das gleiche wie "Execute" lässt dabei aber nur Strings und AutoIt-Makros zu.
AutoIt
$s_Au3String = '"Das ist ein Test." & @CRLF & @TAB & "Weiter geht es." & @CRLF'
ConsoleWrite(_SaveExecute($s_Au3String))
Func _SaveExecute($sExecute)
Local $aElements = StringSplit($sExecute, "&")
Local $sSaveExecute = ""
Local $fSave = False
For $i = 1 To $aElements[0]
$fSave = False
$aElements[$i] = StringStripWS($aElements[$i], 3)
If StringRegExp($aElements[$i], '^"', 0) Then $fSave = True ;Strings Version 1
If StringRegExp($aElements[$i], "^'", 0) Then $fSave = True ;Strings Version 2
If StringRegExp($aElements[$i], "^@", 0) Then $fSave = True ;AutoIt Makro
If $fSave Then $sSaveExecute &= $aElements[$i] & "&"
Next
If StringRight($sSaveExecute, 1) = "&" Then $sSaveExecute = StringTrimRight($sSaveExecute, 1)
Return Execute($sSaveExecute)
EndFunc
Alles anzeigen
Natürlich ist die Funktion noch nicht zu 100% funktional (kleinere Probleme hat sie noch...), aber sie beseitigt schon mal die meisten Versuche, die man darauf loslässt. ![]()