![]() |
Shellexecute/ Wait / Environment Problem
jetzt hab ich 8 Stunden an dem Problem Shellexecute gesessen.
Und 5 verschiedene Wege ausprobiert, die allesamt nicht funktionieren. okok, Shellexecute alleine: Ja; also 4. Aber das reicht mir nicht... bzw. dem Programm. Ich möchte ein älteres DOS Programm starten, und warten, bis es fertig ist. Das Problem dabei ist, daß es eine environmentVariable SET PATH= erwartet. Die müßte also auch eingegeben werden. Vorher. Ich hab das mit creatpeprocess, ShellexecuteandWait , Shellexecute und Batch (.cmd) und assarbads ![]() Ich weiß keinen Rat mehr.. Daher wende ich mich an Euch. |
Re: Shellexecute/ Wait / Environment Problem
Hi!
Was hast du denn bisher und was genau geht denn nicht? Ciao Frederic |
Re: Shellexecute/ Wait / Environment Problem
Hi Coder,
erstmal müsstest du den Wert der PATH-Variable auslesen, um sie anschließend wiederherstellen zu können. Anschließend könntest du eine Batch-Datei erstellen, welche erstmal die Path-Variable setzt, dann das entsprechende Programm aufruft und zu guter letzt die Path-Variable wieder auf den vorherigen Wert setzt. Nun rufst du mit ShellExecute die Datei auf:
Delphi-Quellcode:
Die Funktion ShellExecuteAndWait ist mir zur Zeit nicht bekannt. Leider weiß ich auch nicht, wie das Warten funktioniert :oops: So abder könntest du testen, ob wenigstens die Batchdatei ausgeführt wird.
ShellExecute(Application.Handle, 'open', PChar(VariableZuDeinemPfad), nil, nil, SW_SHOW);
Greetz alcaeus |
Re: Shellexecute/ Wait / Environment Problem
ich hab hier mal 4 Methoden [units - das wichtigste daraus,wg übersicht] hochgeladen
![]() ![]() ------- ![]() ![]() in welcher Reihenfolge ich die ausprobiert habe, weiß ich nicht mehr.. Sorry, hab auch schon müde Augen... Aber vielleicht seht Ihr ja was überall war u.a. Shellapi eingebunden.. daran kann es nicht gelegen haben. Hoffe, aber Ihr kommt damit klar. Danke! |
Re: Shellexecute/ Wait / Environment Problem
mhh, ich wollte noch mal nachfragen..
das is bestimmt untergegangen... Aber die 2 Tage mehr, haben jetzt auch nicht so viel gebracht. Kann doch wer helfen? |
Re: Shellexecute/ Wait / Environment Problem
Zitat:
benutzt wird die Funktion genauso wie die normale Shellexecute Funktion wenn ich mich nicht irre, nur mit dem Unterschied, dass Assarbads Funktion am Ende ein Bool erwartet, also ob gewartet werden soll oder nicht. |
Re: Shellexecute/ Wait / Environment Problem
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 :shock: Als Ausweg könntest du es mal so probieren: 1. Batchdatei CallMyProg.bat erstellen:
Code:
2. Delphi
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 ------------------------
Delphi-Quellcode:
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...
ShellExecute_AndWait(nil;'open','c:\CallMyProg.bat','Pfad zu deiner EXE','Pfad zu deiner EXE';9);
Hoffentlich bringt es dich weiter ... Schöne Grüße, Jens |
Re: Shellexecute/ Wait / Environment Problem
Zitat:
Wenn eine ANSI-Version benötigt werden sollte, einfach bescheidsagen, die ist im Nu fertig ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz