Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#7

Re: Shellexecute/ Wait / Environment Problem

  Alt 14. Dez 2004, 14:56
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
  Mit Zitat antworten Zitat