Hallo zusammen,
ich habe folgendes Problem:
Auf einem Windows XP-System soll per Python-Skript ein neuer Font installiert und nutzbar gemacht werden, ohne den Rechner neu starten zu müssen.
1.) *.ttf wird nach C:\WINDOWS\FONTS kopiert
2.) Registry-Eintrag wird geschrieben
3.) Font muss bekannt gemacht werden.
Punkt 1.) und 2.) ist kein Problem. Ich weiß auch, dass man per GDI32.dll und API-Funktion AddFontResource die Schriftart bekannt machen kann.
Nur wie kann ich das per Python-Skript erledigen?
Vielen Dank schonmal im Voraus für jede Hilfe, die da kommen möge!
Bekanntgabe eines neuen Fonts unter Windows XP
Und dann gibt es natürlich von pywin32... desweiteren wünsche ich dir dann viel Spaß mit der Win-API
Ich habe ein kleines VBScript gefunden, das Fonts installieren kann.
Allerdings gibt es z.B. wenn ein Font bereits vorhanden ist, PopUps die vom user erwarten dass dieser auf "OK" drückt. Ich habe leider auch nach mehrstündigem googeln keine Ahnung wie sich diese Popups verhindern lassen. So nützt es mir nämlich nichts
Hat Ansonsten evtl. jemand eine Python-Lösung inzwischen, oder weiss zufällig wie sich diese Popups umgehen lassen?
hier mal das vbscript (die zu installierende font wird als Argument übergeben):
thx,
knekke
Allerdings gibt es z.B. wenn ein Font bereits vorhanden ist, PopUps die vom user erwarten dass dieser auf "OK" drückt. Ich habe leider auch nach mehrstündigem googeln keine Ahnung wie sich diese Popups verhindern lassen. So nützt es mir nämlich nichts
Hat Ansonsten evtl. jemand eine Python-Lösung inzwischen, oder weiss zufällig wie sich diese Popups umgehen lassen?
hier mal das vbscript (die zu installierende font wird als Argument übergeben):
Code: Alles auswählen
Dim strFontsPath, oApp, oShell
Set oShell = CreateObject("WScript.Shell")
Set oApp = CreateObject("Shell.Application")
strFontsPath = oShell.ExpandEnvironmentStrings("%WINDIR%") & "\Fonts"
oApp.Namespace(strFontsPath).CopyHere WScript.Arguments(0)
Set oApp = Nothing
knekke
Jein!
Die fonts werden nur kopiert, aber im Gegensatz zu einem einfachen kopieren per Python (was ich natürlich vorher probiert habe), übernimmt hier der WindowsExplorer den Kopiervorgang und die Schrift wird deshalb gleich auch installiert (incl. Fortschrittsbalken und leider auch der obengenannten Fehlermeldungen).
Die fonts werden nur kopiert, aber im Gegensatz zu einem einfachen kopieren per Python (was ich natürlich vorher probiert habe), übernimmt hier der WindowsExplorer den Kopiervorgang und die Schrift wird deshalb gleich auch installiert (incl. Fortschrittsbalken und leider auch der obengenannten Fehlermeldungen).
MeckAvus hat geschrieben:Nur wie kann ich das per Python-Skript erledigen?
Code: Alles auswählen
import ctypes
ctypes.windll.gdi32.AddFontResourceA(dein_font)
HWK
Auf einem modernen Windows-System würde ich ja eher die W-Variante aufrufen, samt Übergabe eines Unicode-Objekts. Die Übergabe eines "wchar" dürfte von effizienter sein, da die Windows-API (iirc seit Windows 2000) intern eh Unicode nutzt, die "A"-Variante erfordert folglich nur eine zusätzliche Konvertierung.HWK hat geschrieben:MeckAvus hat geschrieben:Nur wie kann ich das per Python-Skript erledigen?MfGCode: Alles auswählen
import ctypes ctypes.windll.gdi32.AddFontResourceA(dein_font)
HWK