Das ist doch viel zu kompliziert. SizeOf(Pointer) = SizeOf(HWND), also kann man einfach casten: EndOfStream(Pointer(
Handle)) und in der Routine dann HWND(User).
Bernhards Lösung geht natürlich auch, allerdings funktioniert das nicht, falls der Wert nach dem Aufruf noch gebraucht wird - bei CreateThread ist das zum Beispiel so.