Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm hängt bei AddFontResource (https://www.delphipraxis.net/39398-programm-haengt-bei-addfontresource.html)

Schubi 2. Feb 2005 08:33


Programm hängt bei AddFontResource
 
Hallo zusammen!
hab jetzt vermehr Probleme mit einem Programm was schon ewig im Einsatz ist.
Und zwar installiere ich beim starten des Programms temporär ein paar Schriftarten.
Folgender Code:
Delphi-Quellcode:
Try
  AddFontResource(PChar(EXEPath+'Dateien\Verdana.TTF'));
  AddFontResource(PChar(EXEPath+'Dateien\Webdings.TTF'));
  AddFontResource(PChar(EXEPath+'Dateien\Wingding.TTF'));
  AddFontResource(PChar(EXEPath+'Dateien\WINGDNG2.TTF'));
  AddFontResource(PChar(EXEPath+'Dateien\WINGDNG3.TTF'));
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
except
end;
Das Problem: Auf manchen Rechnern (3 an der Zahl) dauern diese 6 Zeilen 2 Minuten, auf einem anderen Rechner hängt sich mein Programm auf ewig auf! :cry: Auf anderen Rechnern funktioniert der Code problemlos!

Woran kann das liegen?
Das Programm bleibt einfach stehen...

Hat irgendjemand ne Idee?

Gruß,

Schubi

Luckie 2. Feb 2005 08:37

Re: Programm hängt bei AddFontResource
 
Existieren die Fonts eventuell auf den Problemrechnern schon? Oder allgemeiner gefargt, was unter scheidet die Rechner, auf denen es geht von denen auf denen es so lange dauert bzw. gar nicht geht?

Schubi 2. Feb 2005 08:45

Re: Programm hängt bei AddFontResource
 
Die Fonts sind auf fast allen Rechnern schon installiert, das scheint aber nichts zu machen.
Die Dateien die ich Registrieren will existieren natürlich auch :D
Ich hab mal versucht die Fonts zu deinstallieren, aber das hat nichts geholfen.

Unterschiede zwischen den Rechnern wüsste ich nicht. Handelt sich um WinXP Prof. Der Rechner wo es garnicht geht wurde erst vor nem Monat neu gemacht, dann lief es ne Weile, und jetzt mit einmal nicht mehr. Auf dem Rechner war das Problem aber vor der Neuinstallation auch schon (da hats aber nur ewig gedauert, ging also dann nach ner minute oder so weiter). Die Neuinstallation war verbunden mit nem Motherboard-Wechsel, also am Board liegts nicht :D
Auf Win98 PCs läuft es überall. Probleme macht nur XP

himitsu 9. Mai 2016 09:37

AW: Programm hängt bei AddFontResource
 
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)

himitsu 10. Mai 2016 10:44

AW: Programm hängt bei AddFontResource
 
Ohhh, zufällig will ein Kunde gerade in den Windows-Ereignislogs rausgefunden haben, dass bei ihm MS Office das Laden der Fonts blockiert.
Aber nichts Genaues weiß ich noch nicht.

hoika 10. Mai 2016 14:47

AW: Programm hängt bei AddFontResource
 
Hallo,
es gibt doch diese "Schnellstart" (?) - Leiste von Office.

Die hatte ich schon mal per simplen OLE als Problemkind aus dem Autostart ruasgeworfen.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz