# Event-Driven COM

Generating a CTL Event for a COM Event |

PxPlus can also process external events by generating a PxPlus CTL whenever an identified COM event occurs.

The following ON EVENT syntax places a CTL value into the input queue:

> ON EVENT evtname$ FROM com_id PREINPUT ctl_id

Where:

evtname$ | Event name, maximum 255 characters.
com_id | Numeric CTL value of a Windows COM object.
ctl_id | Numeric CTL signal to generate (preinput) when a given event occurs.

The PREINPUT format simplifies the event interface by eliminating the need to create an OOP object to manage events. This also works across WindX. The event process does not have access to any event parameters, as it will not be running in-line when the event occurs. If event parameters are required, see Linking to an OOP Object.

Example:

Automated Timer, COM Event

The following event-driven program sets an automated timer by generating a PxPlus CTL to process the associated COM event.

> 0010 def object Timer,"*system"
> 0020 on event "Timeout" from Timer preinput 500
> 0030 Timer'SetTimer(5)
> 0040 input a$,; if ctl=500 then print "Got a Timer Event"; goto *same
> 0050 Timer'SetTimer(0)
> 0060 drop object Timer