You can pass parameters to the UserDocument you are launching as a query
string using the question mark(?) in the URL. After passing the desired
information using the question mark from the HTML, you can retrieve it in
your UserDocument.
HTML File
Modify the Setup Wizard generated .htm file as described in Knowledge Base
article
168431�
(see REFERENCES section below). Append the parameters you
are interested in to the URL using the question mark (?):
Location.Replace = "MyDoc.VBD?MyParametersStr"
The string ParameterStr is passed using the question mark above. The
question mark (?) is typically used to pass query string information. In
addition to using Location.Replace, you can also navigate using
Location.HREF, Window.Navigate, or a simple <A> tag.
Please note that any information passed in a URL is restricted to "safe"
characters.
UserDocument Code
To retrieve the parameters sent to the UserDocument from the launching .htm
file, examine the Parent.LocationURL property from the Show event of the
UserDocument. Since Parent.LocationURL returns the entire URL for the
UserDocument, you will have to parse out the parameter information from it.
When using the file:// protocol the ? will be encoded to a %3F. If the URL is a relative one you are using the file:// protocol and Internet Explorer 4, then the question mark must be explicitly
escaped to %3F for this to work. If it is not escaped, the parameter will not get
passed on. Please note that any unsafe characters in the query
string will be be escaped.
The launching htm can look like this:
<SCRIPT LANGUAGE="VBScript">
Sub Window_OnLoad()
' For relative URLs, ? should be explicitly escaped to %3F
' for Internet Explorer 4
location.href = "userdocument1.vbd%3FMyParamString"
' For absolute file urls, the ? is automatically escaped to %3F
location.href = "file://c:\Tests\userdocument1.vbd?MyParamString"
End Sub
</SCRIPT>
Here is an example of how the parameters can be retrieved in the
UserDocument accounting for both the encoded and unencoded question mark:
Private Sub UserDocument_Show()
Dim Param
Dim P As Integer
P = InStr(Parent.LocationURL, "%3F")
If P > 0 Then
Param = Mid$(Parent.LocationURL, P + 3)
End If
MsgBox "Got : " & Param
End Sub