ShellExecute und nachfolgender Programmcode



  • Hallo zusammen

    ich habe mal eine Frage zu ShellExecute. Ich habe ein Programm bei dem ich in meinem Ablauf ein anderes Programm in ShellExecute aufrufe, dass mir im Hintergrund etwas ausrechnet. Mein Programm im Vordergrund muss aber warten, bis im Hintergrund alles ausgerechnet wurde um weiter zu machen. Gibt es einen Befehl der mein Program solange warten lässt bis ShellExecute fertig ist?

    Hier mein Code:

    bool CVtktest2Dlg::GenerateRobotPath()
    {
    
        ShellExecute(NULL,"open","C:\\Programme\\DeskProto 4.1 Testversion\\Dp.exe","CreatedImplantStencil.stl CocleaImplantPath.ncp", "", SW_SHOWMINIMIZED);
    //Warten?
    
    //Diese Methode kann erst arbeiten wenn DeskProto fertig gerechnet hat
    	ReadMillingPath("C:\\Programme\\DeskProto 4.1 Testversion\\Data\\CocleaImplantPath.ncp");
    }
    


  • Nimm ShellExecuteEx(), damit kannst du etwas genauere Informationen zum gestarteten Programm erhalten. Mit der Funktion hast du sogar zwei Möglichkeiten, dein Ziel zu erreichen:

    • du setzt in fMask das Flag SEE_MASK_NOCLOSEPROCESS und wartest anschließend mit WaitForSingleObject() auf den zurückgegebenen hProcess
    • du setzt das Flag nicht - dann wartet die Funktion, bis der Aufruf fertig ist


  • Danke CStoll für die schnelle Antwort. Vielleicht eine blöde Frage, aber wie rufe ich denn ShellExecuteEx auf? Das hat ja ne ganze Menge Parameter.



  • Hallo

    Nein, ShellExecuteEx hat nur genau einen Parameter... und der ist vom Typ SHELLEXECUTEINFO.
    Ein Anwendungsbeispiel findest du hier im vorletzten Post von WebFritzi.

    bis bald
    akair



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply