Ejecutar *.pdf en delphi

Mi pregunta es como puedo ejecutar un documento en .pdf desde mi aplicación creada en delphi 5.

1 Respuesta

Respuesta
1
Supongo que tendrás instalado el Acrobat Reader en la máquina en donde quieras ver el pdf.
Entonces, tendrías que poner lo siguiente:
procedure TForm1.Button1Click(Sender: TObject);
procedure RunAndWaitShell(Ejecutable, Argumentos: string; Visibilidad:integer);
var
Info:TShellExecuteInfo;
pInfo:PShellExecuteInfo;
exitCode:DWord;
begin
{Puntero a Info}
{Pointer to Info}
pInfo:=@Info;
{Rellenamos Info}
{Fill info}
with Info do
begin
cbSize:=SizeOf(Info);
fMask:=SEE_MASK_NOCLOSEPROCESS;
wnd:=Handle;
lpVerb:=nil;
lpFile:=PChar(Ejecutable);
{Parametros al ejecutable}
{Executable parameters}
lpParameters:=Pchar(Argumentos+#0);
lpDirectory:=nil;
nShow:=Visibilidad;
hInstApp:=0;
end;
{Ejecutamos}
{Execute}
ShellExecuteEx(pInfo);
{Esperamos que termine}
{Wait to finish}
repeat
exitCode := WaitForSingleObject(Info.hProcess,500);
Application.ProcessMessages;
until (exitCode <> WAIT_TIMEOUT);
end;
begin
RunAndWaitShell('c:\rutadelarchivoreader\reader.exe','c:\rutadelarchivo\nombrearchivo.pdf',Sw_ShowNormal);
end;
Otra forma:
-Añade 'ShellApi' en el uses de tu form, y ejecuta esto:
ShellExecute(Form1.Handle,nil,PChar('c:\rutapdf\archivo.pdf'),'','',SW_SHOWNORMAL);
Form1.Handle es el handle a la form. Si tu form se llama de otra manera... cambialo.
Dentro del PChar() puedes poner una variable string sin problemas, es decir, podrías hacer:
var
fichero:string;
begin
fichero:='c:\rutapdf\archivo.pdf';
ShellExecute(Form1.Handle,nil,PChar(fichero),'','',SW_SHOWNORMAL);
end;
Si te sirvió, no te olvides de calificarme en TodoExpertos. Si no, avisame qué es lo que no entendí.
Marcelo
No he conseguido hacer funcionar el método shellExecute, sin embargo he conseguido abrir el pdf ejecutando primero el explorador con esta instrucción y luego abriendo el pdf sobre el.
WinExec(PChar('"c:\archivos de programa\internet explorer\iexplore.exe" "ruta del .pdf"'),SW_SHOWNORMAL);
Gracia por tu ayuda
Ahora si, gracias por todo, ya conseguí hacer funcionar el shellExecute, muchas gracias, mejor tu solución que no la que había encontrado yo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas