<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>VbScript</title>
        <link>http://blogs.ugidotnet.org/fgiossi/category/VbScript.aspx</link>
        <description>Microsoft Visual Basic Script</description>
        <language>it-IT</language>
        <copyright>Francesco Giossi</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Running custom VbScript code from asp</title>
            <link>http://blogs.ugidotnet.org/fgiossi/archive/2007/08/27/running-custom-vbscript-code-from-asp.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Running custom VbScript code from asp&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I was in the need to run some custom VbScript code from an asp page, so I went through the problem and found a very simple solution.&lt;br /&gt;
A common solution is to use the Microsoft ScriptControl.&lt;br /&gt;
Here is a very simple example running a piece of code stored in a text file.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;default.asp&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%@language&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;VBSCRIPT%&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sFile : sFile &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800000"&gt;""&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
sFile &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; LoadFile(&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;MyCustomScript.txt&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;len&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(sFile) &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800080"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
    Response.Write &lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;The result is: &lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ExecScript(sFile)&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;end&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ExecScript(sScript)&lt;br /&gt;
&lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sc&lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Create the Script Control object&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sc &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; server.CreateObject(&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;scriptcontrol&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;
        &lt;br /&gt;
        sc.Language &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;VBSCRIPT&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
        sc.UseSafeSubset &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
        sc.Reset&lt;br /&gt;
        &lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;add the custom script to the ScripContro object&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;        sc.AddCode sScript&lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;run the code and evaluate the result of the "CustomScript" function&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;        ExecScript &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sc.Eval(&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;CustomScript&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;
        &lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; sc &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; LoadFile(sFileName)&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objFSO&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objFSO &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Server.CreateObject(&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;Scripting.FileSystemObject&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br /&gt;
&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objTextStream&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; strFileName&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; lsTemp&lt;br /&gt;
&lt;br /&gt;
    strFileName &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; server.MapPath(sFileName)&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; fsoForReading &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800080"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objFSO.FileExists(strFileName) &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;then&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;The file exists, so open it and output its contents&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objTextStream &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objFSO.OpenTextFile(strFileName, fsoForReading)&lt;br /&gt;
        lsTemp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;  vbNullString &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objTextStream.ReadAll &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; vbNullString&lt;br /&gt;
        objTextStream.Close&lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objTextStream &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;The file did not exist&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;        Response.Write strFileName &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000"&gt; was not found.&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Clean up&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Set&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; objFSO &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Nothing&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
    LoadFile &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; lsTemp&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;end function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
&lt;br /&gt;
%&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR: #000000"&gt;&lt;strong&gt;MyCustomScript.txt&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; CustomScript()&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #008000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Let's calculate the area of a rectangle&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; dHeight : dHeight &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800080"&gt;10&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;dim&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; dWidth : dWidth &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #800080"&gt;20&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;
    CustomScript &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;cstr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(dHeight &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; dWidth)&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;end function&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR: #000000"&gt;This is a very easy example of how to use the Microsoft ScriptControl in an asp page.&lt;br /&gt;
A more realistic task would be, for example, store the script in a database, get the scripts from there and run 'em like exposed above.&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/fgiossi/aggbug/87986.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francesco Giossi</dc:creator>
            <guid>http://blogs.ugidotnet.org/fgiossi/archive/2007/08/27/running-custom-vbscript-code-from-asp.aspx</guid>
            <pubDate>Mon, 27 Aug 2007 21:25:59 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/fgiossi/archive/2007/08/27/running-custom-vbscript-code-from-asp.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/fgiossi/comments/commentRss/87986.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/fgiossi/services/trackbacks/87986.aspx</trackback:ping>
        </item>
    </channel>
</rss>