Winapi Inno安装程序-UrlCreateFromPath

Winapi Inno安装程序-UrlCreateFromPath,winapi,inno-setup,pascalscript,Winapi,Inno Setup,Pascalscript,我希望能够在我的安装程序脚本中使用Shlwapi.dll中的UrlCreateFromPathW函数,但我一直无法让它工作 HRESULT UrlCreateFromPath( _在PCTSTR pszPath中, _在外PTSTR pszUrl, _伊努特·德沃德*pcchUrl, 德沃德旗 ); 我从其他“Inno设置”标记的问题中拼凑了以下内容,并浏览了绝地对DLL的翻译TryUrlCreateFromPath始终返回false。任何帮助都将不胜感激 [代码] 常数 互联网最大URL长度

我希望能够在我的安装程序脚本中使用Shlwapi.dll中的
UrlCreateFromPathW
函数,但我一直无法让它工作

HRESULT UrlCreateFromPath(
_在PCTSTR pszPath中,
_在外PTSTR pszUrl,
_伊努特·德沃德*pcchUrl,
德沃德旗
);
我从其他“Inno设置”标记的问题中拼凑了以下内容,并浏览了绝地对DLL的翻译
TryUrlCreateFromPath
始终返回false。任何帮助都将不胜感激

[代码]
常数
互联网最大URL长度=2048+32+3;
S_OK=$00000000;
函数UrlCreateFromPathW(pszPath,pszUrl:string;var pcchUrl:DWORD;dwFlags:DWORD):HResult;外部的UrlCreateFromPathW@Shlwapi.dllstdcall';
函数TryUrlCreateFromPath(constpath:string;var url:string):布尔;
变量
字符数:德沃德;
旗帜:德沃德,;
开始
SetLength(url、互联网最大url长度);
标志:=0;
结果:=UrlCreateFromPathW(路径、url、字符数、标志)=S_OK;
如果结果是这样的话
SetLength(url、字符数);
结束;
函数初始化设置:布尔;
变量
URL:string;
错误代码:整数;
开始
结果:=真;
如果TryUrlCreateFromPath('c:\temp',URL),则
MsgBox('URL:'+URL,MB确认,MB_确定)
其他的
MsgBox('错误',mbError,MB_OK);
结束;

pcchUrl是一个in/out参数。输入时,它必须包含在
pszUrl
中分配的字符数

您不需要初始化它。它很可能默认为0,因此
UrlCreateFromPath
返回
E_INVALIDARG

将其初始化为:

charcount:=互联网最大URL长度;

太棒了!谢谢你指出这一点,这非常有效。非常感谢你的帮助。