Author Topic: IScriptControl.Run Method  (Read 5442 times)

0 Members and 1 Guest are viewing this topic.

Offline José Roca

  • Administrator
  • Hero Member
  • *****
  • Posts: 2530
  • User-Rate: +209/-0
  • Gender: Male
IScriptControl.Run Method
« on: July 15, 2008, 12:35:40 AM »

The following code illustrates the use of the Run method.

Code: [Select]
' ########################################################################################
' Microsoft Script Control example.
' 2008 José Roca - Use at your own risk.
' ########################################################################################

' SED_PBWIN  ' Use the PBWIN compiler
#COMPILE EXE
#DIM ALL
#INCLUDE "MSSCRIPT.INC"

' ========================================================================================
' Main
' ========================================================================================
FUNCTION PBMAIN

   LOCAL pSc AS IScriptControl
   LOCAL strScript AS STRING
   LOCAL vRes AS VARIANT
   LOCAL rgsabound AS SAFEARRAYBOUND
   LOCAL psa AS DWORD
   LOCAL vPrm AS VARIANT
   LOCAL ix AS LONG

   ' Creates an instance of the Microsoft Script Control
   pSc = NEWCOM "MSScriptControl.ScriptControl"
   IF ISNOTHING(pSc) THEN
      MSGBOX "Error creating an instance of the Microsoft Script Control"
      EXIT FUNCTION
   END IF

   TRY
      ' Set the language. It can be "VBScript" or "JScript"
      pSc.Language = UCODE$("VBScript")
      ' Make an script.
      strScript = "Function Multiply(vPrm1, vPrm2)" & $CRLF & _
                  "   Dim result" & $CRLF & _
                  "   result = vPrm1 * vPrm2" & $CRLF & _
                  "   Multiply = result" & $CRLF & _
                  "End Function"
      pSc.AddCode UCODE$(StrScript)
      ' Create a SafeArray with two elements
      rgsabound.lLBound = 0
      rgsabound.cElements = 2
      psa = SafeArrayCreate(%VT_VARIANT, 1, rgsabound)
      ix = 0 : vPrm = 20
      SafeArrayPutElement(psa, ix, vPrm)
      ix = 1 : vPrm = 6
      SafeArrayPutElement(psa, ix, vPrm)
      ' Allow to display user-interface elements
      pSc.AllowUI = %VARIANT_TRUE
      ' Run the script
      vRes = pSc.Run(UCODE$("Multiply"), psa)
      MSGBOX "Result: " & STR$(VARIANT#(vRes))
   CATCH
      MSGBOX MSScriptControl_GetErrorInfo(pSc, OBJRESULT)
   FINALLY
      ' Destroy the safearray
      IF psa THEN SafeArrayDestroy psa
      psa = %NULL
   END TRY

   ' Releases the interface
   pSc = NOTHING

END FUNCTION
' ========================================================================================
« Last Edit: August 07, 2011, 08:03:42 AM by José Roca »