Wie installiere ich eine schriftart auf dem Rechner des Nutzers in VB.NET so Anwendungen wie Word verwenden kann?
Brauchen, um eine schriftart zu installieren, die auf alle Benutzer-Computer, verwenden Sie die Anwendung, die ich Schreibe, die erstellt kundenspezifische Dokumente in Word. Es ist eine barcode-schriftart.
Habe ich erfolgreich Hinzugefügt wurde die Schrift für meine Lösung und setzen Sie dessen build action auf Embedded Resource und haben auch erfolgreich geschriebenen code um zu überprüfen, ob die schriftart bereits installiert ist auf dem system des Benutzers.
Nun muss ich nur herausfinden, wie extrahieren Sie die schriftart von meiner Lösung und installieren Sie es auf dem Computer des Benutzers, als wenn Sie installiert haben, die schriftart, die sich für den Einsatz in Office-Anwendungen, etc.
Meisten der Beispiele, die ich herausgefunden habe gibt es für die Nutzung der schriftart in der VB.NET Anwendung anstelle von außerhalb und die, die ich gefunden habe, die zu passen scheinen, meinen Zweck nicht für mich arbeiten.
Dies ist die Art von Sache, die in der Regel (und besten) von einem - installer, anstatt Ihr Programm selbst. Es ist in der Regel einfacher zu sagen, das setup-Programm eine schriftart zu installieren, als es ist, es zu tun, innerhalb Ihrer Anwendung.
Das wäre toll, aber ich nehme an, das ist nicht etwas, das coupd getan werden, mit der ClickOnce-installer, die mit Visual Studio 2010 richtig?
InformationsquelleAutor Tom | 2011-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kopie der schriftart in den Windows font-Ordner und dann brauchen Sie, um die schriftart in der Registrierung Hinzugefügt. Ich habe nicht versucht, diese selbst, aber ich denke, es ist möglich, tun dies durch öffnen der Schrift mit der
ShellExecuteA
api in einer ähnlichen Weise wie gesehen hier.Hier ist ein vbscript-Weg, es zu tun, die möglicherweise nützlich sein als Ausgangspunkt, da Sie vielleicht in der Lage sein, ähnliche syntax und Funktionen in VB.Net: Hey, Scripting Guy! Wie Kann ich Schriftarten Installieren Über ein Skript?
ShellExecute
? Und wie genau funktioniert das hinzufügen der schriftart in der Registry? Ich sehe nicht, dass als Beispiel in dem link, den Sie zur Verfügung gestellt.Dies ist eigentlich die einfachste Lösung. Diese Methode ist das Verhalten, als wenn Sie doppelklicken Sie auf die schriftart im Fenster, die, wenn Sie nichts dagegen haben, ein pop-up installieren Fortschrittsbalken von Windows ist gar nicht schlecht. Überprüfen Sie, ob die schriftart vorhanden ist, wenn nicht, kopieren Sie die Ressource, um dort, wo, ausführen von shellexecute und dann löschen Sie die font-Datei extrahiert.
Noch, sollten Sie auf jeden Fall werden unter Verwendung der Unicode-version von
ShellExecute
. Und ich glaube nicht, dass diese informiert die Ausführung von Anwendungen, die system-schriftart-Tabelle geändert wurde; wenn es möglich ist Word ausgeführt werden konnte während Ihre Anwendung installieren von Schriften, das ist etwas im Auge zu behalten.Was ist der Unterschied zwischen dieser und der Unicode-version von ShellExecute?
Ein W statt ein A. Wenn Sie den standard .NET P/Invoke-syntax, werden Sie nicht ein problem haben. Aber wenn Sie versuchen, kopieren und fügen Sie VBScript-Beispiele in VB.NET Sie werden am Ende mit einem Durcheinander (für ach so viele Gründe!).
InformationsquelleAutor Hans Olsson
Erste, Sie müssen kopieren Sie die schriftart in das Verzeichnis " Windows\Fonts (werden Sie wollen, stellen Sie sicher, dass Sie die
- Umgebung.GetFolderPath
Methode zur Verfügung gestellt von der .NET Framework anstelle von hart-Codierung der typische Pfad zum Windows-Verzeichnis, nur in dem Fall, dass etwas anders ist in eine Benutzer-Umgebung).Dann müssen Sie rufen Sie die
AddFontResource
- Funktion hinzufügen, die schriftart, die system-schriftart-Tabelle. DaAddFontResource
wird durch die Windows-API, müssen Sie P/Invoke aufrufen VB.NET code. Die Deklaration sieht z.B. so aus (dielpszFilename
parameter ist der Pfad zu der schriftart-Datei, die Sie hinzufügen möchten):Schließlich, wenn Word (oder was auch immer Anwendung, die Sie beabsichtigen zu verwenden, die schriftart in) ist läuft an der Zeit, die Sie rufen Sie die
AddFontResource
Funktion aus dem code, die Sie brauchen, um informieren Sie, dass die verfügbaren fonts geändert haben. Sie tun das, indem Sie eineWM_FONTCHANGE
Nachricht an alle Fenster der obersten Ebene mit derSendMessage
Funktion und Einstellung derhWnd
parameterHWND_BROADCAST
. Wieder, müssen Sie P/Invoke; die Deklarationen wie folgt Aussehen:Und rufen Sie Sie zu senden, um die broadcast-Nachricht wie diese:
HINWEIS: Die oben genannten Schritte, nur installieren Sie die schriftart für die aktuelle Windows-Sitzung. Wenn Sie die schriftart auf nachfolgenden Neustarts, müssen Sie es der registry hinzufügen. Der Schlüssel zu ändern, ist dieses hier:
Ja, du hast Recht, dass
Environment.SpecialFolder
nicht aussetzen den Ordner "fonts". Hier eine Erklärung, wie man bei ihm ist der Recht Weg .NET: atalasoft.com/cs/blogs/stevehawley/archive/2008/08/25/... (Nein, Sie don ' T fügen Sie einfach "\FONTS
" auf den Pfad zurück durchSpecialFolder.System
.)Die MSDN-Dokumentation ist ziemlich verwirrend. Die installation der schriftart topic sagt, dass Sie die font-Datei in Windows\Fonts dann ruft AddFontResource installieren Sie die schriftart dauerhaft, aber die AddFontResource-Seite, sagt die schriftart muss in der Registrierung aufgeführt
Ja, das ist nicht ungewöhnlich für MSDN. Aber diese Fänge meine Augen auf deinem ersten link: "vorübergehend schriftart installieren, rufen Sie AddFontResource oder AddFontResourceEx. Diese Funktionen laden Sie eine schriftart, die gespeichert ist in einer schriftart-Ressourcendatei. Jedoch, dies ist eine temporäre installation, weil nach einem Neustart ist die schriftart nicht vorhanden sein." Ich nehme an, nur so gehen Sie wirklich sicher ist, um es zu testen, und habe ich nicht.
InformationsquelleAutor Cody Gray
Zuerst kopieren Sie die schriftart auf windows-font-Ordner, dann rufen Sie AddFontResource mithilfe von p/invoke.
Hier ist ein Beispiel, es ist in C# aber Sie sollten in der Lage sein, um es herauszufinden:
UPDATE
Neue URL
http://brutaldev.com/post/2009/03/26/Installing-and-removing-fonts-using-C.aspx
Verfügbar nach einem Neustart der Maschine, die Sie werden ändern müssen Sie den entsprechenden Registrierungseintrag in diesem Fall, (Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts)
InformationsquelleAutor Fermin
Verwendet habe ich das installer-Projekt um die Schriften zu installieren, die ich brauchte, mit meiner Bewerbung und folgte diesem guide
InformationsquelleAutor Jared Knipp