Ich habe da noch etwas, das dir hoffentlich weiterhilft.
Unter Win2000 und XP startet jede Console mit "Standard" Umgebungsvariablen (die in den Windows Systemeigenschaften->Erweitert->Umgebungsvariablen definiert wurden).
Wenn du die Path Variable per Shellexecute (oder wie auch immer) setzt und dann mit ShellExecuteAndWait ,ShellExecuteAndWaitA, ShellExecuteAndWaitW dein DOS-Programm statest, dann kennt dieses die zuvor gesetzte Variable nicht.
Das kannst du ganz leichst nachvollziehen, indem du die Eingabeaufforderung 2x öffnest, in der 1. testweise SET TEST=1234 eingibst und in der 2. Eingabeaufforderung mal SET eintippst...
Nichts zu sehen von TEST=1234
Als Ausweg könntest du es mal so probieren:
1. Batchdatei CallMyProg.bat erstellen:
Code:
REM -------------------- CallMyProg.bat ---------------------------
@echo off
if "%1" =="" GOTO ERR_NoPath
SET PATH=%1;%PATH%
CALL deine.exe
REM CALL sorgt dafür. das die BATCH auf Beendigung von "deine.exe" wartet
exit
:ERR_Nopath
echo Diese Batch erfordert einen Startparameter (Pfad)
echo ABBRUCH!
REM ------------------- Ende CallMyProg.bat ------------------------
2. Delphi
ShellExecute_AndWait(nil;'open','c:\CallMyProg.bat','Pfad zu deiner EXE','Pfad zu deiner EXE';9);
Ich habs bei mit (WinXP Pro SP1 und WinXP Pro SP2) mal probiert indem ich in der CallProg.bat "call cmd.exe" aufgerufen und die Batchdatei mit dem Parameter c:\myprog gestartet habe. Die Path-Variable war richtig gesetzt ... und Shellexec_AndWait hat auf die Beendigung der Batch gewartet...
Hoffentlich bringt es dich weiter ...
Schöne Grüße,
Jens