Das Problem wirst du auch unter einem Vollständig ge-update-tetem Window 7 haben. Delphi älter als XE hat übrigens auch das Problem, wenn man keinen Workaround oder IDEFixPack installiert hat.
Zitat:
Nach der Installation dieses Sicherheitsupdates können Schriftarten, die in einem anderen Verzeichnis als dem Standardverzeichnis für Schriften (%windir%\fonts\) installiert wurden, nicht verändert werden, wenn sie in eine aktive Sitzung geladen werden. Versuche, diese Schriftarten zu ändern, zu ersetzen oder zu löschen, werden blockiert, und die Meldung "Datei wird verwendet" wird angezeigt.
Quelle
Du kannst aber anstatt AddFontResource die Funktion AddFontMemResourceEx verwenden. Dann musst du auch keine Datei anlegen, die du wieder löschen musst.
Delphi-Quellcode:
var
FontsCount: DWORD;
begin
...
FontRes := TResourceStream.Create(hInstance, 'TTF', 'CityFont');
try
FontInt := AddFontMemResourceEx(FontRes.Memory, FontRes.Size, nil, @FontsCount);
finally
FontRes.Free;
end;
end;
RemoveFontMemResource ist nur notwendig, wenn du zwischenzeitlich die Schriftart entfernen willst. Wenn der Prozess beendet wird, werden alle Mem-Fonts ebenfalls entladen.