Nur zur Info, weil wir das selbe Problemchen haben, seit Längerem.
Mein Code prüft allerdings vorher, ob der Font schon installiert ist und wenn, dann wird nichts gemacht. (Screen.Fonts.IndexOf)
Bei uns bleibt es im AddFontResourceEx+FR_PRIVATE hängen.
Dafür sind auch keine Rechte nötig, welche Probleme rumzicken könnten.
Warum es hängen bleibt ... keine Ahnung. Es tritt nicht erkennbar auf Kunden-PCs auf, wo diese Funktion irgendwann verwendet wird.
Die Lösung für uns ist das manuelle permanente installieren der Schriftarten.
Sollte es beim SendMessage hängen bleiben, dann eventuell so versuchen.
Delphi-Quellcode:
if SendMessageTimeout(HWND_BROADCAST, WM_FONTCHANGE, 0, 0, SMTO_NORMAL, 2500, PLongWord(nil)^) = 0 then
PostMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
Oder
nur das PostMessage, wenn es einem egal ist, wenn die Fonst im Delphi nicht sofort refresht werden. (alternativ PostMessage und SendMessage direkt an das eigene Appliaction.Handle)