Schriftarten von XBase aus überprüfen und installieren
Moderator: Moderatoren
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Schriftarten von XBase aus überprüfen und installieren
Hallo Leute,
kennt jemand, wie ich unter Windows mit XBase-Programm überprüfen kann, ob bestimmte Schriftart installiert ist und notfalls diese auch installieren, ohne die Systemsteuerung manuell aufzurufen?
kennt jemand, wie ich unter Windows mit XBase-Programm überprüfen kann, ob bestimmte Schriftart installiert ist und notfalls diese auch installieren, ohne die Systemsteuerung manuell aufzurufen?
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Andreas,
es gibt in den Beispielen ein Programm das die Namen aller Schriftarten (Fonts) anzeigt. Anhand der Namen ist die Überprüfung möglich.
C:\ALASKA\XPPW32\SOURCE\samples\basics\FONT\fontdb.prg
Beim Installieren habe ich jetzt keine Ahnung.
Ich meine ich hätte als schon die TTF Datei einfach ins Fontverzeichnis kopiert. Ob dabei der Explorer aber eine Installation gemacht hat weiß ich nicht. Ist schon länger her.
es gibt in den Beispielen ein Programm das die Namen aller Schriftarten (Fonts) anzeigt. Anhand der Namen ist die Überprüfung möglich.
C:\ALASKA\XPPW32\SOURCE\samples\basics\FONT\fontdb.prg
Beim Installieren habe ich jetzt keine Ahnung.
Ich meine ich hätte als schon die TTF Datei einfach ins Fontverzeichnis kopiert. Ob dabei der Explorer aber eine Installation gemacht hat weiß ich nicht. Ist schon länger her.
Gruß
Hubert
Hubert
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Hallo Hubert,
das mit dem Prüfen der Schriftart funktioniert. Danke.
Jetzt wollte ich die Datei kopieren und überprüfe davor, ob das Verzeichnis existiert. Dabei bekomme ich immer FALSE.
Hier ist der Code:
Bei directory(cWinDir+"*.*") bekomme ich aber die Werte.
Was mache ich falsch? Wieso wird Verzeichnis nicht erkannt? Ich habe doch diese Funktion schon öfters eingesetzt.
das mit dem Prüfen der Schriftart funktioniert. Danke.
Jetzt wollte ich die Datei kopieren und überprüfe davor, ob das Verzeichnis existiert. Dabei bekomme ich immer FALSE.
Hier ist der Code:
Code: Alles auswählen
cWinDir := "C:\WINDOWS\FONTS\"
IF FExists((cWinDir), "D") = .f.
msgbox(...)
else
endif
Was mache ich falsch? Wieso wird Verzeichnis nicht erkannt? Ich habe doch diese Funktion schon öfters eingesetzt.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Schulljung.Hey Tom, Vordrängeln, oder was?
Code: Alles auswählen
cFontDir := GetEnv('windir')+'\fonts'
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo schau mal genau hinten hin.andreas hat geschrieben: cWinDir := "C:\WINDOWS\FONTS"
...
Directory(cWindir,"D") *** VERZEICHNIS !
Du hast einen \ am Schluss. Das Verzeichnis FONTS liegt z.b. In Windows, dann muss man 'C:\WINDOWS\FONTS' abfragen. Oder man schaut ob Dateien drin sind, dann darf man aber kein "D" bei Directory() angeben.
Natürlich ist es besser den WINDIR Namen zu ermitteln, wie es die anderen vorgeschlagen haben. Aber wenn es dieses Verzeichnis gibt, brauchst du bei deinem ersten Code nur das letzte \ entfernen
HIDDEN Dateien findet man nur wenn man das H Attribut bei Directory() setzt. ABER normale Dateien in einem Hidden Ordner werden immer gefunden, solange der Ordner in der Pfadangabe enthalten ist. Das war schon zu Clipperzeiten so.
c:\...\HiddenDir\...\*.* liefert alle Dateien.
Gruß
Hubert
Hubert
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Hallo Tom und Jan,
mit der Umgebungsvariablen habe ich es auch gemacht und habe damit schon den richtigen Verzeichnis.
Es Stand ja auch oben, dass ich die Liste der Dateien mit Directory bekomme.
Nach dem ich jetzt alle Parameter FExists((cWinDir), "DHS") ausprobiert habe und immer die gleiche Antwort FALSE habe, habe ich meinen Code angepasst:
Damit habe ich meine Funktion zum Kopieren der Dateien gebracht.
ABER! Obwohl die Datei im Verzeichnis vorhanden ist, erscheint der Font nicht in der Auswahlliste. Da macht Windows wohl mehr als nur die Dateien kopieren.
mit der Umgebungsvariablen habe ich es auch gemacht und habe damit schon den richtigen Verzeichnis.
Es Stand ja auch oben, dass ich die Liste der Dateien mit Directory bekomme.
Nach dem ich jetzt alle Parameter FExists((cWinDir), "DHS") ausprobiert habe und immer die gleiche Antwort FALSE habe, habe ich meinen Code angepasst:
Code: Alles auswählen
cWinDir := "C:\WINDOWS\FONTS\"
IF len(directory(cWinDir+"*.*")) > 0
msgbox(...)
else
endif
ABER! Obwohl die Datei im Verzeichnis vorhanden ist, erscheint der Font nicht in der Auswahlliste. Da macht Windows wohl mehr als nur die Dateien kopieren.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, Andreas.
Du kannst Fonts auch dann nutzen, wenn sie nicht im \Windows\Fonts-Verzeichnis liegen. Die hierfür nötige API-Funktion heißt "AddFontRessourceEx":
http://msdn2.microsoft.com/en-us/library/ms533937.aspx
Du kannst Fonts auch dann nutzen, wenn sie nicht im \Windows\Fonts-Verzeichnis liegen. Die hierfür nötige API-Funktion heißt "AddFontRessourceEx":
http://msdn2.microsoft.com/en-us/library/ms533937.aspx
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
hi,
bekommt man eine ErrorMsg, also vorher einen Errorblock einbauen.
gruss by OHR
Jimmy
aber auch nur weil du sicherlich Administrator Rechte hast. Als Userandreas hat geschrieben: Damit habe ich meine Funktion zum Kopieren der Dateien gebracht.
bekommt man eine ErrorMsg, also vorher einen Errorblock einbauen.
ich denke man muss zumindest neu booten bevor Windows es "merkt".andreas hat geschrieben: ABER! Obwohl die Datei im Verzeichnis vorhanden ist, erscheint der Font nicht in der Auswahlliste. Da macht Windows wohl mehr als nur die Dateien kopieren.
gruss by OHR
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
hi,
wird der Rechner neu gebootet (unter XP /W2K)
Aber ein normaler User hat kein Schreibrecht auf das \FONT Verzeichniss,
also muss schon bei der Installation vom Administrator der Font installiert
werden und der macht spätestens beim abmelden einen Reboot.
gruss by OHR
Jimmy
Ich lassen dem User gar keine Wahl z.B. mit RunShell(... SHUTDOWN -r )Jan hat geschrieben: Auch wenn das mit dem reboot stimmen sollte: Der klassische User von heute mag es nicht sonderlich, nach einer nicht systembedingten Softwareinstallation den Rechner neu zu starten.
wird der Rechner neu gebootet (unter XP /W2K)
Aber ein normaler User hat kein Schreibrecht auf das \FONT Verzeichniss,
also muss schon bei der Installation vom Administrator der Font installiert
werden und der macht spätestens beim abmelden einen Reboot.
gruss by OHR
Jimmy
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Ein Beispiel wäre nicht schlecht. Ich habe schon mit AddFontResourceEx und AddFontResourceA versucht, bekomme aber immer 0 zurück. Lokale Adminrechte habe ich aber auf meinem PC.brandelh hat geschrieben:Hi,
hast du mal ein Beispiel, wahrscheinlich haben wir das noch nie gemacht (ich brauche keine fremden Schriften ) ...