2012-06-10 35 views
1

我試圖打開Windows資源管理器從德爾福與我從用戶的目錄。該目錄保存爲一個字符串。 當我使用下面的代碼時,它不會接受它。我必須在物理上鍵入。從一個字符串打開資源管理器delphi

sDir : string; 

procedure OpenDirectoryClick(Sender: TObject); 
begin 
ShellExecute(Handle,nil,sDir,nil,nil,sw_Show); 
end; 

上面的代碼不起作用

sDir : string; 

procedure OpenDirectoryClick(Sender: TObject); 
begin 
ShellExecute(Handle,nil,'C:\Windows',nil,nil,sw_Show); 
end; 

上面的代碼確實工作

我該如何解決這個問題?

回答

4

第三個參數應該被鑄造成PChar類型,所以請嘗試這個辦法:

ShellExecute(Handle,nil,PChar(sDir),nil,nil,sw_Show); 

希望這有助於:)

順便說一句:這是聰明不要指望默認的Windows API的行爲,並指定第二個參數爲'打開',而不是零 - 以防萬一;)

+0

我的德爾福甚至不會運行這個。難道是我的德爾福是2006版嗎? – Slugger7

+0

對不起,我的白癡,它確實工作。 – Slugger7

+1

實際上,最好不**提供'open',並讓Windows根據需要決定默認行爲。這已經在這裏討論過很多次了。如果你想要**默認**行爲,請保留第二個參數nil和** get **默認行爲。許多類型的軟件不會將「open」作爲默認註冊。 –

相關問題