GLBasic Benutzerhandbuch

Main sections

SHELLCMD()

ok# = SHELLCMD(cmd$, wait#, show#, rv##)



Führt ein anderes Programm aus. Will man DOS-Befehle verwenden, so muss man das Programm CMD bzw. COMMAND (unter Win9x/ME) verwenden und dann den DOS-Befehl eingeben. z.B. "CMD /C dir > files.txt"

wait# gibt an, ob gewertet werden soll, bis das andere Program beendet wurde.
show# gibt an, ob das Fenster des anderen Programms gezeigt werden soll, oder ob es versteckt gestartet wird.
ok# liefert TRUE oder FALSE, je nach dem, ob das andere Programm gestartet werden konnte.
Der Rückgabewert des anderen Programms wird in rv## übertragen.

// --------------------------------- //
// Project: SHELLCMD

// Warnung: Kompliziertes Programm voraus!

DIM files$[1]

ListFiles(files$[])

FOR i=0 TO BOUNDS(files$[], 0)-1
PRINT "-" + i + ":" + files$[i], 0, i*16+32
NEXT
SHOWSCREEN
MOUSEWAIT



// ------------------------------------------------------------- //
// -=# LISTFILES #=-
// ------------------------------------------------------------- //
FUNCTION ListFiles: names$[]
// Diese Werte werden per Referenz übergeben:
// names$[],
LOCAL tmp$[]
win9x=FALSE
ok = SHELLCMD("CMD /C dir /B /ON /OG > dir.txt", TRUE, FALSE, rv)
IF ok =FALSE
ok = SHELLCMD("COMMAND /C dir /B /ON /OG > dir.txt", TRUE, FALSE, rv)
win9x=TRUE
ENDIF
IF ok=FALSE
PRINT "Strange error - no cmd supplied!?", 0, 0
ELSE
IF win9x
PRINT "Windows 9x based", 0, 0
ELSE
PRINT "Windows NT based", 0, 0
ENDIF
ENDIF

FOR i=0 TO 255
GETFILE "dir.txt", i, data$
IF data$ = "NO_DATA" OR data$ = "NO_FILE" THEN RETURN i
// realloc space for old files + new file
DIM tmp$[i+1]
// copy existing files into temp array
FOR n=0 TO i-1
tmp$[n] = names$[n]
NEXT
// realloc space for original array
DIM names$[i+1]
// copy temp files to array
FOR n=0 TO i-1
names$[n] = tmp$[n]
NEXT
// add new file
names$[i] = data$
NEXT
RETURN i
ENDFUNCTION

See also...