|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Visual Basic Internet Routines UrlGetPart: Determine the Constituent Parts of a URL |
|
Posted: | Monday July 09, 2001 |
Updated: | Monday December 26, 2011 |
Applies to: | VB4-32, VB5, VB6 |
Developed with: | VB6, Windows 2000 |
OS restrictions: | See prerequisites below |
Author: | VBnet - Randy Birch |
Related: |
UrlUnescape: Encoding and Decoding URL Escape Characters UrlCanonicalize: Proper URL Path Encoding and Decoding UrlCreateFromPath: Proper URL Path Conversion from a DOS Path |
Prerequisites |
Shlwapi.dll version 5.00 or greater, Windows XP, 2000, Windows NT4 with IE 5 or later, Windows 98, or Windows 95 with IE 5 or later. |
|
UrlGetPart
takes a URL string and returns a portion of the string based on the parameter passed as the dwPart member of the call. The illustration shows
the result of a series of calls to UrlGetPart. The Source URL contains pretty well the most you'll find in a single URL - a username and
password, the host and port, the path too the data, and additional information as parameters - AKA the query portion.
By calling UrlGetPart once for each part of interest, the separate parts making up the whole are returned. When the URL_PARTFLAG_KEEPSCHEME flag is specified, each part is returned prefaced by the scheme name for the URL. |
BAS Module Code |
None. |
|
Form Code |
To a form add a command button (Command1) and a textbox (Text1) for the source URL. Add two additional textboxes in a control array (Text2(0) and Text3(0)) for the return strings from the call, creating the six of each shown. Note that the code used control array indices 1 through 6, so add seven in total and delete the first control added (the 1-6 corresponds to the values passed as dwPart, making calling the API and filling textboxes easier. Once set up, add the following code: |
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Const MAX_PATH As Long = 260 Private Const ERROR_SUCCESS As Long = 0 Private Const URL_PART_SCHEME As Long = 1 Private Const URL_PART_HOSTNAME As Long = 2 Private Const URL_PART_USERNAME As Long = 3 Private Const URL_PART_PASSWORD As Long = 4 Private Const URL_PART_PORT As Long = 5 Private Const URL_PART_QUERY As Long = 6 Private Const URL_PARTFLAG_KEEPSCHEME As Long = &H1 Private Declare Function UrlGetPart Lib "shlwapi" _ Alias "UrlGetPartA" _ (ByVal pszIn As String, _ ByVal pszOut As String, _ pcchOut As Long, _ ByVal dwPart As Long, _ ByVal dwFlags As Long) As Long Private Sub Form_Load() Dim cnt As Long Text1.Text = "http://randy:password" & _ "@www.mvps.org:8080" & _ "/vbnet/index.html?" & _ "code/network/netconnect.htm" For cnt = 1 To 6 Text2(cnt).Text = "" Text3(cnt).Text = "" Next Command1.Caption = "Get Parts" End Sub Private Sub Command1_Click() Dim sPart As String Dim sUrl As String Dim cnt As Long 'using the original string in Text1 for 'all calls, show the results of calling 'UrlGetPart passing 0& and Keepscheme as 'flags. For cnt = 1 To 6 sUrl = Text1.Text sPart = GetUrlParts(sUrl, cnt, 0&) Text2(cnt).Text = sPart Next For cnt = 1 To 6 sUrl = Text1.Text sPart = GetUrlParts(sUrl, cnt, URL_PARTFLAG_KEEPSCHEME) Text3(cnt).Text = sPart Next End Sub Private Function GetUrlParts(ByVal sUrl As String, _ dwPart As Long, _ dwFlags As Long) As String Dim sPart As String Dim dwSize As Long If Len(sUrl) > 0 Then sPart = Space$(MAX_PATH) dwSize = Len(sPart) If UrlGetPart(sUrl, _ sPart, _ dwSize, _ dwPart, _ dwFlags) = ERROR_SUCCESS Then GetUrlParts = Left$(sPart, dwSize) End If 'If UrlGetPart End If 'If Len(sUrl) > 0 End Function |
Comments |
|
|
|
|||||
|
|||||
|
|||||
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |