@wb32: so wie oben angedeutet. Der Source ist allerdings eben aus dem Gedächtnis und NICHT garantiert lauffähig.
@Lucki: Ich werde den Source lieber nochmal überarbeiten, so daß er auch tatsächlich funktioniert (per Copy&Paste, war aber eigentlich nicht so gedacht von mir
Zur Frage mit dem Klassen Methoden -> class function ...
Ja dies ist absolut notwendig, zumindestens für class procedure WndProc(). Diese Deklaration ist Typkompatibel mit TWndMethod die ja in AllocateHWnd(TSingleInstance.WndProc) benötigt wird. Normalerweise deklarieren wir ein TObject mit procedure WndMethod(), erzeugen ein solches Object um dann AllocateHWnd(MyObject.WndProc) benutzen zu können. Wir müssten im Normalfall also immer eine Objectinstance erzeugen. Um dies nicht machen zu müssen gibt es zwei Wege: 1.) über den obigen Klassenmethoden Weg oder 2.) über ein getürktes Event bei TMethod(Event).Code := @Procedure. Der Weg über Klassenmethoden ist aber sauberer.
Um nun alles noch sauberer zu kapseln habe ich gleich noch die Methoden .Start und .Stop als Klassenmethode deklariert.
Gruß Hagen