2012-06-01 75 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

相關問題