iDispatch variables

<< Click to Display Table of Contents >>

Navigation:  ThinBASIC Language > Data types and variables >

iDispatch variables


iDispatch data type


iDispatch variables are used to interact with COM object.

iDispatch variables contain a pointer to the desired object, so they are considered to contain an "Object Reference". They contain no other value of any kind.


COM stands for "Component Object Model". It is the Microsoft way to interconnect software using a common interface. These interfaces are defined in a COM Object.


Before COM, you had to know the exact implementation of a program before you could 'interface' with it. Using COM, you can now "talk" to its defined Object(s). The only things you have to know are the names of the Objects that are used and which properties or methods they have.


What are Object properties or methods?


These are the two basic characteristics of an Object: can see a property as the data storage of an Object can see a method as an internal function call to do something with the data.


How to create an iDispatch variable


An iDispatch variable is created just like all other variables using DIM or LOCAL. Example:


'---Declare a new iDispatch variable

dim oShell as iDispatch


How to initialize an iDispatch variable with an object reference


Just creating an iDispatch variable is not that useful: it is just an empty pointer to nothing.

You need to assign an object reference to an iDispatch variable to make something with it.


To assign an object reference use one of the following command: NewCom, GetCom, AnyCom.




'---Assign an object reference

oShell = NewCom("Shell.Application")


How to use an iDispatch variable


Once an iDispatch has been initialized with a new object reference, it inherits the object properties and methods.

You have to search the object documentation to have a peek of what properties and methods are implemented.

For example "Shell.Application" information can be found here:


How to check if an iDispatch variable is referencing to an object


It is always convenient to check if an iDispatch variable is referencing to an object. To do so use IsObject function.


How to release an iDispatch variable


It is always necessary to release an iDispatch variable if it is referencing to an object. To do so assign Nothing to the iDispatch variable.

This destroys an iDispatch variable, discontinuing its association with a specific object.
This in turn releases all system and memory resources associated with the object when no more object variables refer to it.




1.Only objects implementing dual interfaces (Dispatch) can be handled in thinBasic.

2.complete compound dotted notation is NOT yet permitted. Only single dotted notation.
object.method is permitted is permitted
object.object.method is NOT permitted



Complete example


'---The following example creates a "Shell.Application" object

'---If all OK, all windows currently on screen are minimized, and after 2 seconds unminized


uses "Console"


dim oShell as iDispatch


printl "Creating a Shell.Application object"


oShell = NewCom("Shell.Application")


if IsComObject(oShell) Then


  printl "Now minimizing all windows, waiting for 2 seconds and then UndoMinimizeALL"



  sleep 2000



  oShell = Nothing




  printl "It was not possible to create Shell.Application object"


end If


printl "---Press a key to finish---"