Вход на сайт
Как программно открыть Acrobat Reader ?
382 просмотров
Перейти к просмотру всей ветки
в ответ krys 19.02.07 10:07
На самом деле все прекрасно работает: и ShellExecute и CreateProcess и то что абсолютный путь к акробату нужно передавать тоже правильно и не нужно знать где стоит система (хотя и это не проблема 1)SHGetSpecialfolderLocation() повозвращает все что хочешь, 2) системная переменная %windir% дает путь установки виндовоза ну а там уж... и т.д. - всего 1000000 способов). Лезем дружно в региcтри и заценяем как сам експлорер открывает пдф. HKEY_CLASSES_ROOT\AcroExch.Document\shell\Open\command а там написано например такое "C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe" "%1". Вот собственно и вся мулька. Это когда юзер даблкликает на пдф файле то експлорер это трансформирует в такой вот вызов. И больше тут ничего нет, ни ДОСовских окон, ни путей непонятных. Хотя я кажется понял в чем дело. У тебя может не работать
по одной очень простой причине. Проверь чтобы пути содержащие пробел брались в кавычки и смело запускай
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, 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, &pi);
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, 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, &pi);
Я вам один умный вещь скажу - но только вы не обижайтесь...