OnSetUserDefinedCommand, OnStateChanged, and OnUserDefinedCommandSelected shows up as events
That's the problem here. The ICaymanMachineInfo interface is an event interface. You're not supposed to create objects of it. The ActiveX-Server you're communicating with creates the appropriate objects
on client request. You have to use the Register Event Callback primitive to register for events defined by this interface. In order to do that you have to create an ICaymanMachine object.