2012-06-10 37 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”作为默认注册。 –

相关问题