【发布时间】:2015-05-23 07:53:35
【问题描述】:
我从 Delphi 打开 pdf 文件时遇到问题。 我需要用参数打开 pdf,因为我想为我的程序创建帮助手册。我尝试使用 shellExecute,但是这个函数需要阅读器 pdf 的路径。
procedure TForm3.Button2Click(Sender: TObject);
var e,s:String;
begin
s:='/A nameddest=somePlaceInPDF pathToMyFile.pdf';
e:='AcroRd32';
ShellExecute(handle,'open',pchar(e),pchar(s),nil,sw_show);
end;
程序运行,但它不是我的解决方案。一些用户可以使用其他 pdf 阅读器。你知道跳过添加阅读器路径的方法吗?
另一种方法是
if ShellExecute(handle,'open',pchar(e),pchar(s),nil,sw_show) < 32 then
begin
ShellExecute(0,0,'rundll32.exe','shell32.dll,OpenAs_RunDLL pathToMyFile.pdf',0,SW_SHOW);
end;
我认为,我需要一些方法,从 pdf 阅读器中提取路径。这是解决这个问题的最佳方案吗?
【问题讨论】:
-
- “某些用户可以使用其他 pdf 阅读器” - 确实。在这种情况下,将参数传递给它不会理解的读者有什么意义?
-
我必须假设每个用户都会有 Acrobat 阅读器?所以我必须在 ShellExecute 中写 pathToReader 或 'acrord32' 作为第三个参数?如果有人使用 X-change 查看器(我使用的)而不是 Acrobat 会怎样。我在 X-change 查看器中为 namedest 创建了关键词。 Acrobat Reader 和 X-change 可以理解这个参数。但是 ShellExecute 在没有指向某些 Reader 的路径时无法正常运行。