Puzzling thru this with eeustice on Discord...
case 18: /* event processor */
if (dllexEffect18() == FALSE)
ProcessEvents();
break;
The ExportDLLs are called before the built-in ProcessEvents logic. To avoid re-creating all of the harpoon event-processing logic (which is a ton), an ExportDLL can cheat by cherry-picking the events it wants to process then returning False so that the built-in ProcessEvents is still called. The negative side effect is that the order ExportDLLs are called is not nicely sorted by filename (See c++ - How can I get FindFirstFile to sort files - Stack Overflow for a nice explanation) so using this approach is somewhat risky but it would still be a valid approach.