Es gäb da eine Möglichkeit:
Mit einem
API-Hook (funktioniert auch ohne DLLs) "CreateWindowEx" hooken, eigene WndProc in die original exe injezieren. Deiner eigenen WndProc die Addresse der original WndProc "mitteilen", die in CreateWindowEx angegeben WndProc addresse austausche. In deiner eigenen WndProc kannst du dann die Messages auswerten. Nicht vergessen: die original WndProc bei jedem aufruf der eigenen WndProc mit den übergebenen Parametern ausführen.
Wird aber alles nicht so ganz simple sein