Função UrlFixupW (shlwapi.h)
[UrlFixupW está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele pode estar alterado ou indisponível em versões subsequentes.]
Tenta corrigir uma URL cujo identificador de protocolo está incorreto. Por exemplo, htttp
será alterado para http
.
Sintaxe
LWSTDAPI UrlFixupW(
[in] PCWSTR pcszUrl,
[out] PWSTR pszTranslatedUrl,
DWORD cchMax
);
Parâmetros
[in] pcszUrl
Tipo: PCWSTR
Um ponteiro para uma cadeia de caracteres terminada em nulo que contém a URL a ser corrigida. Essa cadeia de caracteres não deve exceder INTERNET_MAX_PATH_LENGTH caracteres de comprimento, incluindo o caractere NULL de terminação.
[out] pszTranslatedUrl
Tipo: PWSTR
Um ponteiro para um buffer que, quando essa função retorna com êxito, recebe os caracteres copiados. O buffer deve ser grande o suficiente para conter o número de caracteres WCHAR especificados pelo parâmetro cchMax , incluindo o caractere NULL de terminação. Esse parâmetro pode ser igual ao parâmetro pcszUrl para corrigir uma URL em vigor. Se pszTranslatedUrl não for igual a pcszUrl, o buffer apontado por pszTranslatedUrl não deverá sobrepor o buffer apontado por pcszUrl.
cchMax
Tipo: DWORD
O número de caracteres WCHAR que podem ser contidos no buffer apontado por pszTranslatedUrl. Esse parâmetro deve ser maior que zero.
Retornar valor
Tipo: HRESULT
Retorna S_OK se a URL proposta já era aceitável ou foi corrigida com êxito. O buffer pszTranslatedUrl contém a URL corrigida ou a URL original se nenhuma correção for necessária. Retorna S_FALSE se a URL proposta não puder ser reconhecida o suficiente para ser corrigida. Caso contrário, retornará um código de erro COM padrão.
Comentários
A função UrlFixup reconhece os esquemas especificados pela enumeração URL_SCHEME .
A prioridade é dada ao primeiro caractere na seção de identificador de protocolo, portanto htp
, será convertida http
em em vez de ftp
.
Exemplos
Este exemplo mostra como usar UrlFixupW. Observe que as últimas quatro autocorreções provavelmente não foram o que o usuário pretendia e demonstram limitações da heurística usada pela função.
#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
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | shlwapi.h |
DLL | Shlwapi.dll (versão 5.0 ou posterior) |