Login
Как программно открыть Acrobat Reader ?
382 просмотров
Перейти к просмотру всей ветки
in Antwort Такой-сякой 19.02.07 22:33
В ответ на:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( π, sizeof(pi) );
const char* lpcszToExecution = "\"C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe\" \"C:\Program Files\my.pdf\"";
CreateProcess(NULL, lpcszToExecution, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, π);
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( π, sizeof(pi) );
const char* lpcszToExecution = "\"C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe\" \"C:\Program Files\my.pdf\"";
CreateProcess(NULL, lpcszToExecution, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, π);
Хотел бы задать смежный вопрос, что бы не открывать отдельную ветку.
А как "убить" процесс запущенный в CreateProcess() из запускающей программы?
Сейчас используется примерно такой код
В ответ на:
PostMessage(FindWindow(NULL, MainWindowName), WM_CLOSE, 0, 0);
PostMessage(FindWindow(NULL, MainWindowName), WM_CLOSE, 0, 0);
Все работает, однако необходимо задавать помимо имени программы (для запуска) еще и имя ее главного окна (а оно у некоторых программ может и менятся в процессе работы).
Может быть существует более изящное решение? Желательно не TerminateProcess() и без встраивания обработчиков сообщений в вызываемую программу.
Возможно ли через STARTUPINFO или PROCESS_INFORMATION получить имя главного окна программы или его дескриптор?
Зараннее благодарен за ответ.