Inno 设置 - UrlCreateFromPath
Inno Setup - UrlCreateFromPath
我希望能够在我的安装程序脚本中使用 Shlwapi.dll 中的 UrlCreateFromPathW
功能,但我无法让它工作。
HRESULT UrlCreateFromPath(
_In_ PCTSTR pszPath,
_Out_ PTSTR pszUrl,
_Inout_ DWORD *pcchUrl,
DWORD dwFlags
);
我从其他 "Inno Setup" 标记的问题中拼凑了以下内容,并浏览了 DLL 的 JEDI 翻译。 TryUrlCreateFromPath
总是 returns 错误。如有任何帮助,我们将不胜感激。
[Code]
const
INTERNET_MAX_URL_LENGTH = 2048 + 32 + 3;
S_OK = [=11=]000000;
function UrlCreateFromPathW(pszPath, pszUrl: string; var pcchUrl: DWORD; dwFlags: DWORD): HResult; external 'UrlCreateFromPathW@Shlwapi.dll stdcall';
function TryUrlCreateFromPath(const path: string; var url: string): Boolean;
var
charcount: dword;
flags: dword;
begin
SetLength(url, INTERNET_MAX_URL_LENGTH);
flags := 0;
Result := UrlCreateFromPathW(path, url, charcount, flags) = S_OK;
if Result then
SetLength(url, charcount);
end;
function InitializeSetup: Boolean;
var
URL: string;
ErrorCode: Integer;
begin
Result := True;
if TryUrlCreateFromPath('c:\temp', URL) then
MsgBox('URL: ' + URL, mbConfirmation, MB_OK)
else
MsgBox('ERROR', mbError, MB_OK);
end;
pcchUrl
是一个 in/out 参数。输入时,它必须包含分配在 pszUrl
.
中的多个字符
你没有初始化它。它很可能默认为 0,因此 UrlCreateFromPath
returns E_INVALIDARG
.
初始化如下:
charcount := INTERNET_MAX_URL_LENGTH;
我希望能够在我的安装程序脚本中使用 Shlwapi.dll 中的 UrlCreateFromPathW
功能,但我无法让它工作。
HRESULT UrlCreateFromPath(
_In_ PCTSTR pszPath,
_Out_ PTSTR pszUrl,
_Inout_ DWORD *pcchUrl,
DWORD dwFlags
);
我从其他 "Inno Setup" 标记的问题中拼凑了以下内容,并浏览了 DLL 的 JEDI 翻译。 TryUrlCreateFromPath
总是 returns 错误。如有任何帮助,我们将不胜感激。
[Code]
const
INTERNET_MAX_URL_LENGTH = 2048 + 32 + 3;
S_OK = [=11=]000000;
function UrlCreateFromPathW(pszPath, pszUrl: string; var pcchUrl: DWORD; dwFlags: DWORD): HResult; external 'UrlCreateFromPathW@Shlwapi.dll stdcall';
function TryUrlCreateFromPath(const path: string; var url: string): Boolean;
var
charcount: dword;
flags: dword;
begin
SetLength(url, INTERNET_MAX_URL_LENGTH);
flags := 0;
Result := UrlCreateFromPathW(path, url, charcount, flags) = S_OK;
if Result then
SetLength(url, charcount);
end;
function InitializeSetup: Boolean;
var
URL: string;
ErrorCode: Integer;
begin
Result := True;
if TryUrlCreateFromPath('c:\temp', URL) then
MsgBox('URL: ' + URL, mbConfirmation, MB_OK)
else
MsgBox('ERROR', mbError, MB_OK);
end;
pcchUrl
是一个 in/out 参数。输入时,它必须包含分配在 pszUrl
.
你没有初始化它。它很可能默认为 0,因此 UrlCreateFromPath
returns E_INVALIDARG
.
初始化如下:
charcount := INTERNET_MAX_URL_LENGTH;