Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Décodage d'URL

12 réponses
Avatar
Gloops
Bonjour tout le monde,

Pour transf=E9rer une URL de type mailto: =E0 un autre logiciel, j'ai bes=
oin=20
de convertir une URL "sans espaces", style "subject:D%E9veloppeur%20VB", =

en cha=EEne de caract=E8res lisible, style "subject:D=E9veloppeur VB".

J'ai essay=E9 ceci :
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D
Public Declare Sub InternetCanonicalizeUrl Lib "wininet.dll" _
Alias "InternetCanonicalizeUrlA" ( _
ByVal lpszUrl As String, _
ByVal lpszBuffer As String, _
ByRef lpdwBufferLength As Long, _
ByVal dwFlags As Long)
Public Const ICU_DECODE As Long =3D &H10000000

Public Function DecodeURL(strURL As String) As String
Dim strTemp As String, strBuff As String
strTemp =3D strURL
strBuff =3D Space(256)
InternetCanonicalizeUrl strTemp, strBuff, 255, ICU_DECODE
DecodeURL =3D Left$(strBuff, InStr(strBuff, Chr$(0)) - 1)
End Function
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D

Mais pas de chance, InternetCanonicalizeUrl fait simplement une copie de =

strTemp vers strBuff -et donc ma fonction aussi.

Alors quoi, je vais parcourir moi-m=EAme la cha=EEne pour d=E9tecter le s=
igne=20
pourcent, et =E0 chaque fois que je l'aurai trouv=E9 je vais consid=E9rer=
les=20
deux caract=E8res suivants comme un nombre hexad=E9cimal dont il faudra=20
fournir le caract=E8re correspondant ?

Ben si j'avais su, je l'aurais fait tout de suite ...


D'ailleurs, ici
http://msdn2.microsoft.com/en-us/library/aa384342.aspx
on me parle d'une valeur de retour de InternetCanonicalizeUrl, alors que =

ApiViewer2004 (charg=E9 il y a quelques semaines) la d=E9clare comme une =

Sub, donc sauf truc qui me serait pass=E9 au-dessus, sous VB, sans valeur=
=20
de retour.
C'est quoi, que j'ai loup=E9 ?

2 réponses

1 2
Avatar
Gloops
parci a écrit, le 05/05/2007 09:58 :
J'utilise plutôt les fonctions de Shlwapi.dll qui permettent le mêm e
genre de chose :

http://vbnet.mvps.org/index.html?code/internet/urlcanonicalize.htm
http://vbnet.mvps.org/index.html?code/internet/urlescape.htm
http://vbnet.mvps.org/index.html?code/internet/urlcreatefrompath.htm
http://vbnet.mvps.org/index.html?code/internet/urlgetpart.htm



Je ne sais pas si il faut quelque chose de particulier pour naviguer
là-dessus, je n'ai vu que les deux dernières traiter -fort bien au
demeurant, semble-t-il- le sujet annoncé dans l'URL.
Avatar
Gloops
Jean-marc a écrit, le 04/05/2007 23:18 :
En fait, si tu déclares comme ça ça marche aussi car VB va
se débrouiller pour faire la promotion (le casting) correct
dans le type booléen de VB.

Mais j'aime meiux (affaire de goût) garder les déclarations
avec les vrais types, et faire le casting "à la main" !

Bref ...




OK ... Ben avec tout ça, ça commence à s'éclaircir :)
1 2