Announcement

Collapse
No announcement yet.

Externe Programme starten mit CreateProcess und WaitForSingleObject

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Externe Programme starten mit CreateProcess und WaitForSingleObject

    Ich möchte aus einer C++ Builder-Anwendung ein anderes Programm starten
    und dann auf die Beendigung desselben warten.

    Mit der unten aufgeführten Methode funktioniert das auch, wenn eine Anwendung
    aufgerufen wird, die ebenfalls mit dem Borland C++ Builder erstellt wurde.

    Ich will aber eine Installation aufrufen, die mit dem InstallShield-Express erstellt wurde,
    was leider nicht funktioniert:

    Die Installation wird erst gestartet, wenn die aufrufende Anwendung abgebrochen wurde.
    Es liegt jedenfalls an der Methode WaitForSingleObject.
    <br>
    //--- Source ------------------------------------------------------------------------<br>

    bool __fastcall WinExecAndWait( const AnsiString & iAppPath, int iVisibility )<br>
    {<br>
    PROCESS_INFORMATION pi;<br>
    STARTUPINFO si;<br>
    <br>
    memset( & pi, 0, sizeof( PROCESS_INFORMATION ) );<br>
    memset( & si, 0, sizeof( STARTUPINFO ) );<br>
    <br>
    si.cb = sizeof( STARTUPINFO );<br>
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_FORCEONFEEDBACK;<br>
    si.wShowWindow = iVisibility; // z.B. SW_SHOWNORMAL;<br>
    <br>
    if ( ! ::CreateProcess( NULL, iAppPath.c_str(),<br>
    NULL,NULL,false,<br>
    NORMAL_PRIORITY_CLASS, NULL, NULL, & si, & pi ) )<br>
    { // Error<br>
    throw Exception( BTL::GetLastError() );<br>
    }<br>
    else // No Error<br>
    {<br>
    HANDLE proc = pi.hProcess;<br>
    CloseHandle( pi.hThread );<br>
    <br>
    // Funktioniert für Borland-C++-Builder-Anwendungen aber nicht für Install-Shield-Anwendungen !!!<br>
    bool result = ( WaitForSingleObject( proc, INFINITE ) != WAIT_FAILED );<br>
    <br>
    CloseHandle( proc );<br>
    return result;<br>
    }<br>
    }<br>

  • #2
    Bei InstallShield-Installationen wird durch die setup.exe ein weiteres Programm gestartet. Danach beendet sich die setup.exe. Deshalb kann das nicht funktionieren.

    Tschau, Jör

    Comment


    • #3
      Hallo Jörg,

      ich hab ein ähnliches Problem mit dem InstallShield. Hast Du eine Ahnung welches Programm durch setup.exe gestartet wird?

      Viele Grüße
      Ronal

      Comment


      • #4
        Ich habe das Problem noch immer, das ich eine InstallShield-Anwendung aus einer Borland-Builder-Applikation starten möchte und die BB-Applikation auf die Beendigung der InstallShield-Anwendung warten soll.

        Hat mittlerweile jemand einen Tipp
        oder noch besser eine Lösung für mich

        Comment

        Working...
        X