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.exeWenn 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).
-
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);