3

VB6を使用。自分で作成するのは難しくありませんが、事前に作成されたものがあるのではないかと思いました。

4

2 に答える 2

4

Bob のコメントに促されて: Google は、Karl Petersonによるニュースグループの投稿でUrlEscapeのこのラッパーを見つけました。

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

免責事項: 私はこのコードを自分で試したことはありません。

于 2010-01-02T19:43:03.297 に答える
2

URL_ENCODE でCoInternetParseUrl()を使用する必要があります。

目的に合わせて変更された MSDN のサンプル。もちろん、VB6 から CoInternetParseUrl() を呼び出す方法を理解する必要がありますが、その方法は順調に進んでいるようです。

#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...
}

必要に応じて、PARSE_CANONICALIZE の代わりに PARSE_ENCODE を使用することもできます。

また、google-url の使用を検討してください。COM ベースではなく C++ であるため、難しい場合があります。

于 2010-01-02T20:15:35.760 に答える