Quantcast
Channel: Scripting Languages
Viewing all articles
Browse latest Browse all 68

Process Synchronization with VBScript

$
0
0

Hello community,

 

in a few posts we discuss the possibility to use multiple VBScript processes. With the Run command you can start different processes asynchronously. But after the start, you have not really a chance to synchronize the processes. Maybe via a file interface. For the process synchronization and communication offers Windows the IPC interface (Interprocess Communication).

 

There are different technics to synchronize and to communicate between processes, like

  • Events,
  • Semaphores,
  • FileMaps and
  • the ClipBoard
  • etc.

 

To use this possibilities I programmed a COM library which offers this technics. You find it here.

 

With COMIPC you can easily e.g. synchronize processes, look at the following example:

 

'-Begin-----------------------------------------------------------------


  '-Directives----------------------------------------------------------

    Option Explicit


  '-Constants-----------------------------------------------------------

    Const INFINITE = -1   


  '-Variables-----------------------------------------------------------

    Dim oIPC, hEvent, wsh, extVBS, rc


  '-Main----------------------------------------------------------------

    Set oIPC = CreateObject("COMIPC")

    If IsObject(oIPC) Then

   

      hEvent = oIPC.EventCreate("TestEvent", 0, 0)

     

      If hEvent Then


        extVBS = "Script 2.vbs"

        Set wsh = CreateObject("WScript.Shell")

        If IsObject(wsh) Then

          wsh.Run("wscript.exe " & extVBS)

          Set wsh = Nothing

        End If


        rc = oIPC.EventWait("TestEvent", INFINITE)

        rc = oIPC.EventClose(hEvent)

       

      End If 

      Set oIPC = Nothing

    End If

   

    MsgBox "End"     


'-End-------------------------------------------------------------------

 

We create an event, start a second script and wait until the event is set in the second script.

 

'-Begin-----------------------------------------------------------------


  '-Directives----------------------------------------------------------

    Option Explicit

   

  '-Variables-----------------------------------------------------------

    Dim oIPC, rc


  '-Main----------------------------------------------------------------

    Set oIPC = CreateObject("COMIPC")

    If IsObject(oIPC) Then

   

      MsgBox "Event"

   

      rc = oIPC.EventSet("TestEvent")

      Set oIPC = Nothing

    End If

   

'-End-------------------------------------------------------------------

 

If the event is set, in the second script, the first script will finish.

 

So it is e.g. possible to start different SAP GUI Scripts and to set different synchronization points. Also you can communicate between different processes via FileMap - File mapping is the association of a file's contents with a portion of the virtual address space of a process.

 

Enjoy it.

 

Cheers

Stefan


Viewing all articles
Browse latest Browse all 68

Trending Articles