如何通过Delphi 2009打开PDF文件(窗口默认程序Adobe Reader)?

Tre*_*vor 3 pdf delphi shellexecute delphi-2009 adobe-reader

所以基本上当我尝试打开W​​indows默认使用Adobe Reader打开的PDF文件时,没有任何反应.如果我将默认程序设置为Internet Explorer,它可以工作..

这是我的代码

var
openDialog : TOpenDialog;    // Open dialog variable
begin
  openDialog := TOpenDialog.Create(self);
  openDialog.InitialDir := MaskEditLocation.Text;
  if openDialog.Execute then
   ShellExecute(Handle, PChar('Open'), PChar(openDialog.FileName), nil, nil,
   SW_SHOWNORMAL);
  openDialog.Free;
end;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢您的帮助!

Ken*_*ite 20

你永远不应该假设应用程序已经注册了一个特定的动词,如openrun.当你想要默认行为时,只需将动词留空,让Windows决定:

ShellExecute(Handle, nil, PChar(OpenDialog.FileName), nil,  nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

  • @GDF:阅读我的回答.并非所有应用程序都定义了`open`动词,而`open`可能不是默认值.读我写的字.:-)另外,请自己阅读ShellExecute上的MSDN文档.(区别在于`ShellExecute`的第二个参数.)就像我说的,如果你想要**默认**行为,请保持动词为空,Windows将自动给你**默认**行为(相同)通过双击Windows资源管理器中的文件获得的东西. (2认同)