; TOOLS00.AU3 Sonstige Funktionen für AutoIT3
; Lutz Müller, FH Köln Campus Gummersbach
#include-once

func writeln($ln)
   send($ln&"{ENTER}")
endfunc

func write($ln)
   send($ln)
endfunc

; Anzahl der Zeilen einer Datei
func NumLn($filename)
   local $file, $i, $NumLn
   $file = FileOpen($filename, 0)
   ; Probe ob $file geöffnet werden kann
   If $file = -1 Then
      MsgBox(0, "Fehler func NumLn", $filename&" kann nicht geöffnet werden")
      $NumLn = 0
      return $NumLn
   EndIf
   ; Lese Zeilen bis EOF
   $i = 0
   While 1
      $line = FileReadLine($file)
      If @error = -1 Then ExitLoop
      $i = $i+ 1
   Wend
   FileClose($file)
   $NumLn = $i
   return $NumLn
endfunc

; Funktion schreibt cmd Ausgabe nach $cmdout
; $cmdout[0] = Anzal der Ausgabezeilen
; $cmdout[n] = nte Zeile der Ausgabe
func cmd($ln)
   local $cmdfile, $file, $line, $i
   $cmdfile = EnvGet('tmp')&'\'&int(random(1000000000,9000000000))&'.tmp'
   RunWait(@COMSPEC&' /c  "'&$ln&' > '&$cmdfile&'"', "", @SW_HIDE)
   global $cmdout[NumLn($cmdfile)+1]
   $file = FileOpen($cmdfile, 0)
   ; Probe ob $file geöffnet werden kann
   If $file = -1 Then
      MsgBox(0, "Fehler func cmd", $cmdfile&" kann nicht geöffnet werden")
      return
   EndIf
   ; Lese Zeilen bis EOF
   $i = 1
   While 1
      $line = FileReadLine($file)
      If @error = -1 Then ExitLoop
      $cmdout[$i]=$line
      $i = $i+ 1
   Wend
   FileClose($file)
   $cmdout[0]=$i- 1
   ; Lösche TMP File
   FileDelete ($cmdfile)
endfunc

; Funktion schreibt cmd Ausgabe nach *send*
func writecmd($ln)
   local $i
   cmd($ln)
   for $i = 1 to $cmdout[0]
      writeln($cmdout[$i])
   next
endfunc

; Funktion schreibt cmd nach return
func cmd2str($ln)
   local $outstr, $i
   cmd($ln)
   for $i = 1 to $cmdout[0]
      $outstr = $outstr&$cmdout[$i]&chr(13)&chr(10)
   next
   return $outstr
endfunc