Wie starte ich in Visual Studio 2008 (MFC) das Programm Adobe Acrobat 9 ?



  • Hallo, bin schon Stunden am probieren und bekomme es nicht hin.

    Ich habe eine ComboBox und dort gibt es 3 Punkte:

    Adobe
    Editor (von MS)
    Paint (von MS)

    Editor starte ich so:

    if (strPgmName == "EDITOR")
    WinExec("notepad.exe", SW_SHOW);

    Das funktioniert. Wie aber starte ich Adobe Acrobat 9 welches unter folgendem Pfad zu finden ist:
    C:\Programme\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe

    Wenn ich bei Windows XP unter Start -> Ausführen -> acrobat.exe eingebe, startet acrobat ganz normal, gleiches gilt auch für meinen Pfad siehe oben.
    Leider funktioniert der Programmstart mit Visual C++ und MFC so nicht. Habe schon verschiedenste Möglichkeiten getestet, bin ratlos.



  • Ich vermute mal, dass du einen absoluten Pfad angeben musst, weil das Acrobat-Verzeichnis nicht in der PATH-Variable steht. Probier das mal. Wenn's klappt, musst du dir nur Gedanken machen, wie du per Programm an den richtigen Pfad kommst (der wird in der Registry stehen).


  • Mod

    Das einfachste ist es das PDF Dokument mit ShellExecute(Ex) zu starten und sich um die EXE gar nicht zu kümmern.



  • Wäre dies zu verwenden?

    Bekomme es immer noch nicht hin!?

    PROCESS_INFORMATION pi = {0};
    STARTUPINFO si = {sizeof(si)};
    si.wShowWindow = SW_NORMAL;

    ::CreateProcess( _T("C:\\WinNT\\notepad.exe"), _T(""), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
    ::WaitForSingleObject( pi.hProcess, INFINITE);

    ::CreateProcess( _T("C:\\WinNT\\notepad.exe"), _T(""), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
    ::WaitForSingleObject( pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    ::MessageBox( NULL, _T("done"), NULL, 0);



  • Martin sagte, ShellExecuteEx verwenden, nicht CreateProcess...



  • Besten Dank,

    das hier ist die Lösung meines Problems:

    Bibliothek einbinden: #include <shellapi.h>

    Dann bei entsprechendem ComboBox Eintrag:

    ShellExecute(NULL,(_T("open")),(_T("acrobat.exe")),NULL, NULL, SW_NORMAL);

    Ferner würde ich gerne noch einen Beenden Button einbauen, weiß aber nicht wie ich das Programm beenden soll?

    E D I T:
    so geht es: exit(EXIT_SUCCESS); //oder wenn man will exit(EXIT_FAILURE);


Anmelden zum Antworten