Mit VB6. Es ist nicht schwer, Ihre eigenen zu rollen, aber ich fragte mich, ob es eine vorgefertigte da draußen war?
Antworten
Zu viele Anzeigen?Angeregt durch Bobs Kommentar: Google fand diesen Wrapper für UrlEscape en un Newsgroup-Beitrag von Karl Peterson.
Private Declare Function UrlEscape Lib "Shlwapi.dll" Alias "UrlEscapeA" ( _
ByVal pszURL As String, ByVal pszEscaped As String, ByRef pcchEscaped As Long, _
ByVal dwFlags As Long) As Long
Private Const URL_DONT_ESCAPE_EXTRA_INFO As Long = &H2000000
Private Function EscapeURL(ByVal URL As String) As String
' Purpose: A thin wrapper for the URLEscape API function. '
Dim EscTxt As String
Dim nLen As Long
' Create a maximum sized buffer. '
nLen = Len(URL) * 3
EscTxt = Space$(nLen)
If UrlEscape(URL, EscTxt, nLen, URL_DONT_ESCAPE_EXTRA_INFO) = 0 Then
EscapeURL = Left$(EscTxt, nLen)
End If
End Function
Haftungsausschluss: Ich habe diesen Code nicht selbst ausprobiert.
Sie sollten Folgendes verwenden CoInternetParseUrl() mit URL_ENCODE.
Das Beispiel aus MSDN, modifiziert für Ihre Zwecke. Natürlich müssen Sie herausfinden, wie Sie CoInternetParseUrl() von VB6 aus aufrufen können, aber Sie scheinen auf dem richtigen Weg zu sein.
#include <wininet.h>
// ...
WCHAR encoded_url[INTERNET_MAX_URL_LENGTH];
DWORD encoded_url_len = ARRAYSIZE(encoded_url);
// Assumes |url| contains the value you want to encode.
HRESULT hr = CoInternetParseUrl(url, PARSE_CANONICALIZE, URL_ENCODE, encoded_url,
INTERNET_MAX_URL_LENGTH, & encoded_url_len, 0);
if (SUCCEEDED(hr)) {
// Do stuff...
}
Je nach Bedarf können Sie PARSE_ENCODE anstelle von PARSE_CANONICALIZE verwenden.
Erwägen Sie auch die Verwendung von google-url . Könnte schwierig sein, da es C++ und nicht COM-basiert ist.