ShellExecute macht ncht das was ich erwarte!



  • Mein Problem mit ShellExecute() ist nicht "Wie verwende ich es" sondern das es nicht das macht was ich möchte. Ich arbeite mit Visual Studio 6.0. Habe ein Programm geschrieben das mir ein Batch Programm erzeugt. Rufe ich dieses Batch-Programm mit ShellExecute() auf tut sich nix außer das sich die Windows Shell kurz öffnet. Öffne ich die Batch mit einem doppelklick, macht sie genau das was ich möchte. Woran kann das liegen? Mein Code:

    // Auszug aus meinem Quellcode
    
    nPos = strPathofCFile.ReverseFind('\\');
    strPathofCFile = strPathofCFile.Mid(0, nPos);
    strPathofCFile += "make.bat";
    
    SaveFile.Open(strPathofCFile, CFile::modeCreate | CFile::modeWrite);
    SaveFile.WriteString(strmakeBAT);
    SaveFile.Close();
    // Bis hierhin alles in Ordnung. Batch wird erzeugt, der Inhalt stimmt, alles OK.
    
    ShellExecute(NULL, "open", strPathofCFile, NULL, NULL, SW_SHOW);
    

    Vieleicht sehe ich im Moment den Wald vor Bäumen nicht mehr , aber ich komme nicht dahinter.



  • Vermutlich passt der Pfad nicht.
    Mach an das Ende deiner Batch mal ein pause und lies was ausgegeben wird. 😉



  • estartu schrieb:

    Vermutlich passt der Pfad nicht.
    Mach an das Ende deiner Batch mal ein pause und lies was ausgegeben wird. 😉

    Hab mal debugged. Der Pfad ist korrekt.
    Danke für den Tip mit der Pause. Ich rufe mit der Batch ein makefile auf. Jetzt hab ich folgende Fehlermeldung:

    NMAKE : fatal error U1052: Datei 'makefile' nicht gefunden Stop.
    

    Habe versucht mit Sleep(1000) zu warten ob das makefile vieleicht zu spät erstellt wird. Kein ERfolg. Dann habe ich mit einem Haltepunkt bei ShellExecute gewartet bis das makefile erstellt war und dann von Hand einen Schritt weiter gemacht. Das selbe Ergebnis, obwohl das makefile mit Sicherheit da ist. Wie gesagt, wenn ich die Batch doppelt anklicke gibt es kein Problem 😕
    makefile liegt im selben Verzeichnis wie die Batch.



  • abrissbirne schrieb:

    makefile liegt im selben Verzeichnis wie die Batch.

    Du rufst die Batch ja durch eine totale Pfadabgabe auf.
    Wenn du debuggst ist dein Arbeitsverzeichnis das Projektverzeichnis und wenn du die Exe richtig startest ist es das Verzeichnis der Exe.

    Wo liegt die Batch?
    Erstelle doch mal in der Batch eine Textdatei und such danach, wo die gelandet ist. 😉

    Falls es wirklich der Pfad ist: Ich behelfe mir bei Batches damit, dass ich den Pfad mitgebe. Über %1\makefile sollte es dann auch klappen oder mit cd %1 .


Anmelden zum Antworten