gpt4 book ai didi

delphi - CreateProcess 调用返回错误代码 50

转载 作者:行者123 更新时间:2023-12-02 07:03:09 30 4
gpt4 key购买 nike

尝试使用 Createprocess 在给定路径中启动 Windows 资源管理器,但我不断收到

系统错误。代码 50。不支持该请求。

我做错了什么?

procedure TfrmProjectManager.OpenFolderinExplorer(const aPath: string);
function GetWinDir: String;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetWindowsDirectory(Buffer, SizeOf(Buffer));
SetString(Result, Buffer, StrLen(Buffer));
end;

var
strCmdLine : String;
fStartInfo : TStartupInfo;
fProcessInfo : TProcessInformation;

begin

try
if sysutils.DirectoryExists(aPath) or
(MessageDlg('Folder [%s] not found. Create it?', mtConfirmation, mbYesNo, 0)=mrYes) then
begin
sysutils.ForceDirectories(aPath);
FillChar(fStartInfo,sizeof(fStartInfo),0);
FillChar(fPRocessInfo, Sizeof(fProcessInfo),0);

fStartInfo.cb:=sizeof(fStartInfo);
fStartInfo.lpReserved := nil;
fStartInfo.lpDesktop := nil;
fStartInfo.lpTitle := nil;
fStartInfo.dwFlags := STARTF_USESHOWWINDOW ;
fStartInfo.wShowWindow := SW_SHOW;
fStartInfo.cbReserved2 := 0;
fStartInfo.lpReserved2 := nil;

strCmdLine := '"' + GetWinDir + '\explorer.exe"';

if not CreateProcess(nil,PChar(strCmdLine),nil,nil,False, 0,nil,PChar(aPath),fStartInfo,fProcessInfo) then
RaiseLastOSError;

end

except
on E:TObject do
if not IsAbortException(E) then
raise;
end;
end;

我在 CreateProcess 中尝试了各种参数组合,但似乎无法找到正确的组合。

最佳答案

我想说你不应该在这里使用CreateProcess。我不会调试您的 CreateProcess,而是为您提供我认为打开文件夹的 shell View 的正确方法。调用ShellExecute

ShellExecute(0, '', PChar(aPath), '', '', SW_SHOWNORMAL);

通过这种方式,您可以让 shell 决定向用户显示文件夹内容的适当方式。

关于delphi - CreateProcess 调用返回错误代码 50,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12247327/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com