See also: about COM, using COM components.
In QM you can:
1. Use type libraries. See available type libraries, declare them in code, and use identifiers (interfaces, types, constants, etc) declared in type libraries.
2. Explicitly declare COM interfaces.
3. Use COM interface pointer variables.
5. Call COM object functions (methods and properties).
6. Use early binding (VTBL or id), or late binding. By default, if possible, QM uses VTBL binding, which is fastest. You can use #opt dispatch directive to use id binding, or IDispatch variable to use late binding (without declaring).
7. Enumerate collections.
8. Receive events.
9. Use ActiveX controls in dialogs.
10. Use OLE Automation variable types.
11. Use type info.
12. Execute VBScript code. Use VbsExec and other functions from System\Functions\Scripting folder.
Currently QM does not support default member, named arguments, implicit application object, type library viewer (object browser), and other non-vital features.