If you have programming experience, you can do with QM most of things that you can do with C++ or other programming languages. You can use variables of any type, structures, pointers, functions, dll functions (Windows API, C run-time library and other), callback functions, string manipulation functions, COM. For example, you can get data from controls, create windows, create new trigger types.
Your created functions can later be used in any macro, like new macro commands. You can share useful functions and macros (import, export, shared files). For example, you can post them to the QM forum. If you share your macros/functions, remember that they may not work on older QM versions. You should provide version info, e.g. "Created with QM 2.1.9, works on Windows XP.". Macros compiled to exe files does not require QM and therefore will always work.
Many QM features (many functions, declarations, dialog editor, floating toolbar) are implemented as QM extensions. They are in the System.qml file (the System folder in the macro list). Most of the functions and applications contain short descriptions in form of comments or separate macros. To initialize QM extensions, function init is executed when QM starts or file is opened. The System.qml file should be added to every macro list file as shared folder. You should not modify it.
Some functions and applications are in the forum.
If you don't see a command or function you need, you can request it in the forum.