Web Scripting

From iMacros
Revision as of 10:46, 26 April 2007 by Dk (talk | contribs)
Jump to navigation Jump to search

Control via the Scripting Interface

If you own the Scripting Edition iMacros automatically installs the Scripting Interface. Using these powerful commands you can control iMacros with any Windows programming language that supports the use of COM objects.

Almost all Windows programming languages support this technology, including the free Windows Scripting Host, Visual Basic 6, Visual Basic .NET, C#, Java, Perl, Phyton, C++, ASP, PHP, ASP.NET. On the iOpus homepage [1] many examples for different programming languages can be found.

This Chapter will provide some examples of how to use the Scripting Interface. The examples will be using Visual Basic Script, Visual Basic .NET, starting iMacros from a web site, starting iMacros as a Windows Service, and running iMacros under a restricted user account such as in ASP/ASP:NET/PHP. On our web site we have tutorials for many other programming languages.

Example using Windows Scripting Host

Related example scripts: Examples\Windows Scripting Host

The Window Scripting Host interprets programs written in a language called Visual Basic Script, which is related to Visual Basic and the macro languages of the Microsoft Office package (VBA). Visual Basic Script files can be created and edited with any editor (e.g. Notepad), are executed by double-clicking them, and have the file ending .vbs.

The iMacros Browser is controlled from Visual Basic Script by calling commands of the Scripting Interface.

The following example creates an instance of the iMacros Browser, sets some variables, and plays a macro. The return value of the macro is then checked for errors. To run this example copy this text into a file with the ending .vbs, e.g. test.vbs. After double-clicking the file, iMacros will start in tray mode since in line 4 the command line switch -tray is activated. This means that an iMacros icon will apear in the system tray during replay. You can maximize iMacros by double-clicking this icon.

'initialize Scripting Interface
Set iim1 = CreateObject ("InternetMacros.iim")
i = iim1.iimInit() 

' setting variables
i = iim1.iimSet("-var1", "Tom Tester")
i = iim1.iimSet("-tray", "")

' displaying message
i = iim1.iimDisplay("This is a test")

' play macro
i = iim1.iimPlay("myfirstmacro")

' check success
If i > 0 Then
  s = "Everything OK"
  s = iim1.iimGetLastError()
End If
MsgBox s

' exit iMacros
i = iim1.iimExit()

Example using Visual Basic.NET

Related example scripts: Examples\Visual Basic

The following example is part of a Visual Basic project that creates an iMacrosBrowser instance, plays a macro, and checks for errors - this example assumes the existence of a function called void Log(String logString), which logs messages.

Imports Status = InternetMacros.Status

Public Class Form1
    Inherits System.Windows.Forms.Form

  Private m_app As InternetMacros.App

  Private Sub startIMacros() 
    Const cmdTimeout = 60

    Dim s As InternetMacros.Status

    m_app = New InternetMacros.App

    s = m_app.iimInit("", True, "", "", 5)

    s = m_app.iimPlay("demo-extract", cmdTimeout)

    If s > 0 Then
      Log("Macro completed ok")
    ElseIf s < 0 And s > -100 Then
      Log("Interface problem: " + CStr(s))
     Log("Macro problem: " + CStr(s))
    End If

    s = m_app.iimExit()

  End Sub

End Class 

Intellisense Support

Related example scripts: Examples\Visual Basic

For full Intellisense support for all Scripting Interface commands in your .NET projects (C#, VB.NET, ASP.NET and others) or in Visual Basic 6.0, you need to add the iMacros interface (iimInterface.dll) reference to your project.

1. Here is how to do this in Visual Studio 2003/2005 (.NET)

Fig 1 Add a reference file
Fig 2 Select the iMacros Type Library component
Fig 3 Display all Scripting Interface commands with Intellisense

2. Here is how to do this for Visual Basic 6

Fig 4 Select the iMacros component
Fig 5 Display all Scripting Interface commands with Intellisense

Start iMacros from a Web Page

The following code example shows you how to start a macro from within a web page using Visual Basic Script and the Scripting Interface:

<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>

<a onclick=test() href="#">Click here to start script</a>


To test this code, simply save it as .HTM file and view it in your web browser. Make sure to allow the execution of scripting content on web pages.

In this example iMacros needs to be installed locally. It will run on the client. This is in contrast to the ASP example, where iMacros runs on the server (invisible to the user).

Start iMacros as a Windows Service

Windows Services is a topic for experts only. If you do not know what a Windows Service is there is a very good chance that you do not need this feature. If you are merely looking for a way to execute iMacros on a regular basis the Windows Scheduler will do the trick for you.

In the following we assume that you are familiar with the basic concept of a Windows Service.

You can start iMacros via any application that runs as a Windows Service - more information on services can be found here. The advantage of using a Windows Service is that the application can run even if no user is logged in. Due to a restriction enforced by Windows on services a service program can either be interactive (i.e. have a Console, read keyboard input, etc) or have network access - but not both at the same time. Since iMacros needs the ability to use the network more then user input you need to provide the user name and password of a normal Windows account.

If you use iMacros inside an application that runs as a Windows Service (as opposed to running under a regular user account) you need to provide a user name and a password:

There a two methods to do this:

(1) [Recommend]: Use "iimRunner.exe" to start iMacros under a regular user account (see the section on running iMacros under a restricted user account). This method is very easy to use and avoids all complications typically associtated with a Windows service

(2) Provide a password when you use iimInit:

int ret_code = iimInit( String command_line, boolean start_browser, String run_as_user, String run_as_password, String run_as_domain )

You can also provide the password encrypted. iMacros detects automatically if the password is in plain text or encrypted form. To encrypt your password record a macro where you enter the password into a password text field on a web page (with security settings to STOREKEY or TMPKEY) and then copy and paste an encrypted password.

Running iMacros as a Windows service does not affect the concept of a user session, because iMacros - while started by a service - effectively runs under the user account which you use in iimInit.

Running iMacros under a restricted user account (ASP/ASP.NET/PHP)

The problem of running iMacros from an ASP page is that by default all programs started by an ASP page have only the rights of the ASP user, which is a very restricted account. An ASP account is significantly more restricted than even the "Guest" user of a machine. However, iMacros needs at least the rights of a "Guest" account or "Limited account" in order to work correctly.

We created the "iimRunner.exe" method as a very easy and secure method to run iMacros from a very restricted user account such as the ASP.NET user account or a Windows Service.

Start the "iimRunner.exe" module inside the account that you want to use iMacros with. You can use for example the Windows task scheduler for this purpose: Select the option to start iimRunner.exe as soon as the computer boots.

Inside your script you only need to tell iimInit to use iimRunner to start iMacros.exe. This is done by adding the flag "-runner":

i= iim1.iimInit("-runner")

This is all that you need to do. Now the iMacros Browser can be controlled as before via iimPlay, iimExit etc.

As a special feature of iimRunner.exe it is possible to control the number of iMacros instances that are allowed to run in parallel. This is done by changing the MaxNumberOfInstances paramenter in the simple.config file located in the iMacros Program Files folder. If the max. number is reached iimInit returns a -7 error code.

Error Handling

The command iimPlay returns a status value. Values greater than zero indicate success, negative values indicate a problem.

The error codes returned on the batch and scripting level are the same codes that are displayed in the iMacros software itself. They allow a fine reaction on every possible problem iMacros can encounter. Scripting Interface specific errors are discussed here.

Related Example Script: Combine-Macros.vbs