从字符串delphi中打开资源管理器

Slu*_*er7 2 delphi

我正在尝试使用从用户那里获得的目录从 Delphi 中打开 Windows 资源管理器。该目录保存为字符串。当我使用以下代码时,它不会接受它。我必须亲自输入。

sDir : string;

procedure OpenDirectoryClick(Sender: TObject);
begin
 ShellExecute(Handle,nil,sDir,nil,nil,sw_Show);
end;
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用

sDir : string;

procedure OpenDirectoryClick(Sender: TObject);
begin
 ShellExecute(Handle,nil,'C:\Windows',nil,nil,sw_Show);
end;
Run Code Online (Sandbox Code Playgroud)

上面的代码确实有效

我该如何解决这个问题?

cez*_*zar 5

第三个参数应转换为 PChar,因此请尝试以下操作:

ShellExecute(Handle,nil,PChar(sDir),nil,nil,sw_Show);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)

顺便说一句:明智的做法是不依赖默认的 Windows API 行为并将第二个参数指定为“open”,而不是 nil - 以防万一;)

  • 要打开资源管理器窗口,您应该使用“explore”动词,而不是“open”动词,特别是当“explore”不是默认值时。如果您知道要调用的确切行为,则不要依赖默认行为。 (2认同)