Вход на сайт
Как программно открыть Acrobat Reader ?
NEW 16.02.07 17:36
Привет.
Я работаю с Visual Studio C++ 6.0.
Мне надо программно открыть Acrobat Reader и потом pdf - file. Как это можно сделать?
Я работаю с Visual Studio C++ 6.0.
Мне надо программно открыть Acrobat Reader и потом pdf - file. Как это можно сделать?
стойте там и слушайте сюда, именно отсюда будет проистекать
NEW 19.02.07 22:12
в ответ digital.pilot 19.02.07 21:58
Ну может быть... Я говорю, давно это было когда я ShellExecute использовал. Просто CreateProcess элегантней на мой взгляд. И процесс можно контроллировать - запустить его параллельно к вызывающей программе или же заставить вызывающую программу ждать завершения процесса.
Может это все и с помощью ShellExecute можно реализовать - не буду спорить. В общем - скорее тут вопрос вкуса.
Может это все и с помощью ShellExecute можно реализовать - не буду спорить. В общем - скорее тут вопрос вкуса.
http://denis-aristov.ucoz.com
NEW 19.02.07 22:33
в ответ 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);
Я вам один умный вещь скажу - но только вы не обижайтесь...