Ich habe es halbwegs lösen können, ja. Problem war, dass ohne iTouch ein Hook nötig ist (in etwa der, den ich oben gepostet habe), aber dieser Hook bei installiertem iTouch dafür sorgt, dass die Message vervielfältigt wird.
Mein Lösungsprinzip:
Das Programm besitzt ein Flag "MMKey-Taste bereits benutzt", der beim Start aus einer ini gelesen wird. Initial ist dieser "False". Der Hook wird zunächst nicht installiert.
Wenn das erste Mal ein MMKey-Tastendruck erkannt wird (weil z.B das Programm beim Drücken den Fokus hatte, oder iTouch läuft), dann wird ein MMKey-Test initiiert. Dieser sieht so aus, dass der Hook installiert wird, und modal ein neues Fenster geöffnet wird, was keine MMKeys empfangen kann. Der User wird dann aufgefordert, EINMAL die Play-Taste zu drücken.
Im Hauptfenster wird nun (bei laufendem MMKey-Test) jede ankommende MMKey-Message "Play/Pause" registriert und dabei eine Variable hochgezählt (eine kommt mindestens an, wir haben ja den Hook installiert; zur Not gibt es ein "Abbrechen"-Button). Außerdem wird nach einem empfangenen "Play/Pause" die modale Form so geändert, dass sich beim User nett bedankt wird, und er aufgefordert wird, den OK-Button zu klicken, der dann erscheint.
Dann wird die Anzahl der angekommenen Messages ausgewertet. Ist sie = 1, dann hat der Hook vernünftig funktioniert, und wird beim nächsten Mal geladen.
Ist sie >1, dann ist wahrscheinlich iTouch o.Ä. installiert - auf jeden Fall läuft was schief (oder der User hat zweimal gedrückt

- für diesen Fall kann der Test auch manuell gestartet werden). Der Hook wird dann deinstalliert und beim nächsten Start nicht geladen.
Der Wert "MMKey-Taste bereits benutzt" wird dann auf True gesetzt, so dass die MMKey-Einrichtung beim nächsten Mal nicht mehr durchgeführt werden muss.