AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Shellexecute/ Wait / Environment Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Shellexecute/ Wait / Environment Problem

Ein Thema von Coder · begonnen am 12. Dez 2004 · letzter Beitrag vom 26. Dez 2004
Antwort Antwort
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#1

Shellexecute/ Wait / Environment Problem

  Alt 12. Dez 2004, 22:32
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 assarbads pas probiert (wie starte/binde ich die pas ein?)

Ich weiß keinen Rat mehr..
Daher wende ich mich an Euch.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Shellexecute/ Wait / Environment Problem

  Alt 12. Dez 2004, 22:33
Hi!

Was hast du denn bisher und was genau geht denn nicht?


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Shellexecute/ Wait / Environment Problem

  Alt 12. Dez 2004, 23:27
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: ShellExecute(Application.Handle, 'open', PChar(VariableZuDeinemPfad), nil, nil, SW_SHOW); Die Funktion ShellExecuteAndWait ist mir zur Zeit nicht bekannt. Leider weiß ich auch nicht, wie das Warten funktioniert So abder könntest du testen, ob wenigstens die Batchdatei ausgeführt wird.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#4

Re: Shellexecute/ Wait / Environment Problem

  Alt 12. Dez 2004, 23:39
ich hab hier mal 4 Methoden [units - das wichtigste daraus,wg übersicht] hochgeladen
http://flashpage.fl.funpic.de/delph1/1.htm
http://flashpage.fl.funpic.de/delph1/2.htm
-------
http://flashpage.fl.funpic.de/delph1/3.htm << (gehört mit dem unteren zusammen in 1 Project, denk ich mal)
http://flashpage.fl.funpic.de/delph1/shellapiex.pas.htm <= hab die unit so von assarbad geladen

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!
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#5

Re: Shellexecute/ Wait / Environment Problem

  Alt 14. Dez 2004, 13:57
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?
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Shellexecute/ Wait / Environment Problem

  Alt 14. Dez 2004, 14:10
Zitat:
assarbads assarbads pas probiert (wie starte/binde ich die pas ein?)
so wie jede andere Unit auch --> uses ShellApiEx;

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.
  Mit Zitat antworten Zitat
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
Assarbad
(Gast)

n/a Beiträge
 
#8

Re: Shellexecute/ Wait / Environment Problem

  Alt 26. Dez 2004, 15:57
Zitat von perle:
so wie jede andere Unit auch --> uses ShellApiEx;

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.
Korrekt.

Wenn eine ANSI-Version benötigt werden sollte, einfach bescheidsagen, die ist im Nu fertig
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz