2012-06-01 72 views
2

所以基本上,当我尝试打开W​​indows默认打开Adobe Reader的PDF文件没有任何反应。如果我设置的默认程序到Internet Explorer它的工作原理..如何通过Delphi 2009打开PDF文件(窗口默认程序Adobe Reader)?

这里是我的代码

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; 

什么想法?

感谢您的帮助!

+0

很久以前,我记得Acrobat Reader软件不能正常工作,如果',而应用程序正在调试ShellExecute'是所谓的,但它的工作很好,当应用程序正常运行。“ –

回答

18

你永远不应该假定应用程序已经注册了一个特定的动词,如openrun。刚刚离开动词空当你想要的默认行为,并让Windows决定:

ShellExecute(Handle, nil, PChar(OpenDialog.FileName), nil, nil, SW_SHOWNORMAL); 
+0

我会使用'打开'...没有理由不使用开放式动词。 ...我看不出他和他目前在做什么之间的区别。 – GDF

+2

@GDF:阅读我的答案。并非所有的应用程序都定义了“open”动词,而“open”可能不是默认的。阅读我写的文字。 :-)另外,请自己阅读ShellExecute上的MSDN文档。 (和ShellExecute的第二个参数不同)。就像我说的,如果你想要**默认的**行为,让这个动词为空并且Windows会自动给你**默认的**行为(相同在Windows资源管理器中双击该文件即可获得)。 –

+0

我看到你在说什么,所以如果Adobe Reader没有定义打开,这将与双击相同。然而,由于我知道Adobe Reader定义了一个'开放',除了其他动词之外,这对我来说似乎只是一个奇怪的回应......这一切都很好...... – GDF

相关问题