urlFixupW 函数 (shlwapi.h)

[UrlFixupW 可用于“要求”部分中指定的操作系统。 在后续版本中,它可能已更改或不可用。]

尝试更正协议标识符不正确的 URL。 例如, htttp 将更改为 http

语法

LWSTDAPI UrlFixupW(
  [in]  PCWSTR pcszUrl,
  [out] PWSTR  pszTranslatedUrl,
        DWORD  cchMax
);

参数

[in] pcszUrl

类型: PCWSTR

指向包含要更正的 URL 的 以 null 结尾的字符串的指针。 此字符串的长度不得超过 INTERNET_MAX_PATH_LENGTH 个字符,包括终止 NULL 字符。

[out] pszTranslatedUrl

类型: PWSTR

指向缓冲区的指针,当此函数成功返回时,该缓冲区接收复制的字符。 缓冲区必须足够大,才能包含 cchMax 参数指定的 WCHAR 字符数,包括终止 NULL 字符。 此参数可以等于 pcszUrl 参数,以就地更正 URL。 如果 pszTranslatedUrl 不等于 pcszUrl则 pszTranslatedUrl 指向的 缓冲区不得与 pcszUrl 指向的缓冲区重叠。

cchMax

类型:DWORD

pszTranslatedUrl 指向的缓冲区中可以包含的 WCHAR 字符数。 此参数必须大于零。

返回值

类型: HRESULT

如果建议的 URL 已接受或已成功更正,则返回S_OK。 pszTranslatedUrl 缓冲区包含更正的 URL;如果不需要更正,则包含原始 URL。 如果无法充分识别建议的 URL 以更正,则返回S_FALSE。 否则,返回标准 COM 错误代码。

注解

UrlFixup 函数识别 URL_SCHEME 枚举指定的方案。

为协议标识符部分中的第一个字符提供优先级,因此 htp 将转换为 http 而不是 ftp

注意 请勿将此函数用于确定性数据转换。 UrlFixupW 使用的启发法可以从一个版本更改为下一个版本。 函数仅用于更正可能无效的用户输入。
 
此函数仅在 Unicode 版本中可用。

示例

此示例演示如何使用 UrlFixupW。 请注意,最后四个自动更正可能不是用户的预期,并且演示函数使用的启发式限制。


#include <windows.h>
#include <shlwapi.h>
#include <stdio.h>
#include <tchar.h>

void sample(LPCWSTR pszUrl)
{
    WCHAR szBuf[256];
    
    HRESULT hr = UrlFixupW(pszUrl, szBuf, 256);
    if (hr == S_OK) 
    {
        wprintf(L"%-35s %s\n", pszUrl, szBuf);
    } 
    else 
    {
        wprintf(L"%-35s failed\n", pszUrl);
    }
}

int __cdecl main()
{
    sample(L"http://www.microsoft.com");
    sample(L"mail:someone@example.com");
    sample(L"abc:def");
    sample(L"someone@example.com");
    sample(L"htpp:wwwmicrosoft.com");
    sample(L"htps:\\\\www.microsoft.com");
    sample(L"http:someone@example.com");

    return 0;
}

..................................

This example might produce the following output:

http://www.microsoft.com    http://www.microsoft.com
http:www.microsoft.com      http://www.microsoft.com
mail:someone@example.com    mailto:someone@example.com
abc:def                     failed
someone@example.com         failed
htpp:wwwmicrosoft.com       http://wwwmicrosoft.com
htps:\\www.microsoft.com    http://www.microsoft.com
http:someone@example.com    http://someone@example.com
                

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
DLL Shlwapi.dll (5.0 或更高版本)