Поделиться через


Функция UrlFixupW (shlwapi.h)

[UrlFixupW доступен для использования в операционных системах, указанных в разделе Требования. Он может быть изменен или недоступен в последующих версиях.]

Пытается исправить URL-адрес, идентификатор протокола которого неверен. Например, htttp будет изменен на http.

Синтаксис

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

Параметры

[in] pcszUrl

Тип: PCWSTR

Указатель на строку, завершающуюся значением NULL, которая содержит URL-адрес для исправления. Длина этой строки не должна превышать INTERNET_MAX_PATH_LENGTH символов, включая завершающий символ NULL .

[out] pszTranslatedUrl

Тип: PWSTR

Указатель на буфер, который при успешном возвращении этой функции получает скопированные символы. Буфер должен быть достаточно большим, чтобы содержать количество символов WCHAR, заданных параметром cchMax , включая завершающий символ NULL . Этот параметр может быть равен параметру pcszUrl для исправления URL-адреса на месте. Если pszTranslatedUrl не равен pcszUrl, буфер, на который указывает pszTranslatedUrl , не должен перекрывать буфер, на который указывает pcszUrl.

cchMax

Тип: DWORD

Количество символов WCHAR , которые могут содержаться в буфере, на который указывает pszTranslatedUrl. Этот параметр должен быть больше нуля.

Возвращаемое значение

Тип: HRESULT

Возвращает S_OK, был ли предложенный URL-адрес уже приемлемым или был успешно исправлен. Буфер pszTranslatedUrl содержит исправленный URL-адрес или исходный URL-адрес, если исправление не требуется. Возвращает S_FALSE, если предложенный URL-адрес не распознается достаточно для исправления. В противном случае возвращает стандартный код ошибки COM.

Комментарии

Функция UrlFixup распознает схемы, указанные перечислением URL_SCHEME .

Приоритет отдается первому символу в разделе идентификатора протокола, поэтому htp будет преобразован http в вместо ftp.

Примечание Не используйте эту функцию для детерминированного преобразования данных. Эвристика, используемая UrlFixupW , может изменяться от одного выпуска к другому. Функция должна использоваться только для исправления возможных недопустимых входных данных пользователем.
 
Эта функция доступна только в версии Юникода.

Примеры

В этом примере показано, как использовать 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
Header shlwapi.h
DLL Shlwapi.dll (версия 5.0 или более поздняя)