Функция UrlCreateFromPath

Declare Sub UrlCreateFromPath Lib "shlwapi.dll" Alias "UrlCreateFromPathA" (ByVal pszPath As String, ByVal pszUrl As String, ByRef pcchUrl As Long, ByVal dwFlags As Long)
UrlCreateFromPath берет путь в формате DOS и конвертирует его в канонический URL

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

Возвращается S_FALSE, если pszPath уже в формате URL. В этом случае pszPath просто копируется в pszUrl. В успешном случае возвращается S_OK

Параметры

pszPath
Строка, указывающая на путь в DOS-формате
pszUrl
Получаемая новая строкав формате URL
pcchUrl
Длина pszUrl
dwFlags
Зарезервировано. Установите в 0

Пример

' Создадим url из полного имени файла
' например из "E:/my photo.jpg"
' мы получим "file:///E:/my%20photo.jpg"

Const MAX_PATH = 260

Public Function url_encode(ByVal str_urlpath As String) As String
    Dim out_str As String
    Dim str_path As String
    out_str = String(MAX_PATH, 0)
    str_path = str_urlpath + String(100, 0)
    
    UrlCreateFromPath str_path, out_str, MAX_PATH, 0
    out_str = StripTerminator(out_str)
    
    url_encode = out_str
End Function

' удаляем все символы Chr$(0)

Function StripTerminator(sInput As String) As String
    Dim ZeroPos As Long
    ZeroPos = InStr(1, sInput, Chr$(0))

    If ZeroPos > 0 Then
        StripTerminator = Left$(sInput, ZeroPos - 1)
    Else
        StripTerminator = sInput
    End If
End Function

Private Sub Command1_Click()
Print url_encode("e:\myfoto.jpg")
End Sub

Категория

Shlwapi