More on late binding

How about an example on how to use scripting capabilities in your application, if the script control is available, without setting any references?

'Attempt to get the type for the script control.
Dim ScType As System.Type = System.Type.GetTypeFromProgID( _
"MSScriptControl.ScriptControl")

'If the prog ID is missing, Null is returned (Nothing in Visual Basic).
If ScType Is Nothing Then

    MessageBox.Show("The Script Control is not available.")

Else

    Dim Sc As Object = System.Activator.CreateInstance(ScType)

    'All is well. Configure the script control: Set language.
    Dim LanguageParameterValue() As Object = {"VBScript"}
    ScType.InvokeMember("Language", Reflection.BindingFlags.SetProperty, Nothing, Sc, _
          LanguageParameterValue, Nothing)

    'Allow UI operation (such as MsgBox).
    Dim AllowUIParameterValue() As Object = {True}
    ScType.InvokeMember("AllowUI", Reflection.BindingFlags.SetProperty, Nothing, Sc, _
          AllowUIParameterValue, Nothing)

    'Finally, set timeout to [forever].
    Dim TimeoutParameterValue() As Object = {-1}
    ScType.InvokeMember("Timeout", Reflection.BindingFlags.SetProperty, Nothing, Sc, _
          TimeoutParameterValue, Nothing)

    'Create a script.
    Dim S As New System.Text.StringBuilder()
    S.AppendLine("For A=1 To 10")
    S.AppendLine("MsgBox A")
    S.AppendLine("Next")

    'Execute the script. Error in the script will raise an exception. Use Try/Catch here.
     Dim Code() As String = {S.ToString()}
     ScType.InvokeMember("AddCode", Reflection.BindingFlags.InvokeMethod, Nothing, Sc, _
          Code, Nothing)

End If

In this example, I showed how to use the script control, if it is available. When you are writing applications that use for example Word or Excel, you might want your application to features from Word, if Word is available, but still be able to run; this is the way. Have fun!

MSScriptControl and Vista

In some of my applications, I make use of the MSScriptControl to execute dynamically generated scripts, or just to enable scripting in my applications. Windows Vista users will get an error if they install applications that use MSScriptControl, because it is not included in Vista by default, and since it’s a file that is controlled by the operating system, you should not include it in your MSI package. If the MSScriptControl is missing, you can get it from Microsoft Download Center. This is the direct link:

http://www.microsoft.com/downloads/details.aspx?familyid=d7e31492-2595-49e6-8c02-1426fec693ac&displaylang=en

If you don’t want to memorize this URL, you type the following keywords in Google:

download microsoft script control

You need to validate your copy of Windows to be able to download it.