1. 程式人生 > >Delphi XE2實現永久性安裝字型

Delphi XE2實現永久性安裝字型

無論是安裝一些系統字型還是自定義的字型檔案,本方法都是適用的。需要注意的是目前網路上介紹的使用AddFontResource實現安裝字型,但是僅僅對本次設定有效,重啟之後字型還是會消失。使用本文方法可永久實現字型的安裝。

看看MSDN中關於安裝字型的介紹:

To install unique hidden font resources follow these steps:
1 Copy the TrueType font file to a temporary file with a unique filename such as "ttfont01.ttf" that can be owned by the instance of the application. 
2、 Call the CreateScalableFontResource() function to create a uniquely named temporary hidden font resource file that can also be owned by the instance of the application. 
3、Call the AddFontResource() function to install this uniquely named font resource file for this instance of the application. 
4、Use the font in the application as desired.
5 When the instance of the application terminates or is otherwise finished with the font file, it should uninstall the font resource by calling the RemoveFontResource() function until it fails. 
6 Lastly, the instance of the application should delete the temporary font resource file and the temporary TrueType font file that it created. 

根據介紹,使用Delphi來實現:

procedure TForm11.Button12Click(Sender: TObject);
var
  sysDir, sFontFileName, sFontName, sFontDir, sFOTFile: string;
  ssourceDir: string;
  reg: TRegistry;
begin
  sFontFileName := 'msyh.ttf';//測試字型(微軟雅黑)
  sysDir := GetWinDir;
  sFontDir := sysDir + '\Fonts\';
  sFOTFile := sFontDir + ChangeFileExt(sFontFileName, '.FOT');
  ssourceDir := ExtractFilePath(ParamStr(0)) + sFontFileName;
  //將字型檔案複製到系統Fonts目錄下
  CopyFile(PChar(ssourceDir), PChar(sFontDir+ sfontfileName), false);
  //建立字型資原始檔
  CreateScalableFontResource(0, PChar(sFOTFile), PChar(sFontFileName), PChar(sFontDir));
  //新增字型資源
  AddFontResource(PChar(sFOTFile));
  //新增登錄檔項
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  try
    if reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts', false) then
    begin
      if not reg.ValueExists('微軟雅黑 (TrueType)') then
        reg.WriteString('微軟雅黑(TrueType)', sFontFileName);
    end;
  finally
    reg.Free;
  end;
  //通知系統更新字型列表
  PostMessage(HWND_BROADCAST,  WM_FONTCHANGE,  0,  0);
end;
 

相關推薦

Delphi XE2實現永久性安裝字型

無論是安裝一些系統字型還是自定義的字型檔案,本方法都是適用的。需要注意的是目前網路上介紹的使用AddFontResource實現安裝字型,但是僅僅對本次設定有效,重啟之後字型還是會消失。使用本文方法可永久實現字型的安裝。 看看MSDN中關於安裝字型的介紹: To ins

在.NET中使用程式碼實現檢索/安裝字型

'檢索已安裝字樣: Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clic

Delphi 實現解除安裝Windows應用程式(類似360軟體管家-解除安裝程式)

摘要: 本文主要梳理的是實現解除安裝程式並等待解除安裝程式執行結束的方法,如果僅僅是呼叫解除安裝程式,相信難度也不大,但是我們需要等待解除安裝程式執行完畢,這就有些費腦筋了(是不是想到了360?沒錯,360也具有這個功能)。這套邏輯是最近專案需要自己研究出來的,可能存在不完

win7 下 delphi xe2 安裝fastreport 的分享

折騰了一個上午安裝測試,fastreport 4.12, 4.13, 4,14三個版本可以在win7 32位操作下可正常安裝使用, 4,15編譯失敗無法安裝。    win7 64位作業系統上述四個版本均不能安裝,均在frx16.bpl安裝時出現錯誤,目前不知如何解決,請

CentOS6.9上安裝cobbler2.6實現自動化安裝Linux系統

cobbler 網絡安裝系統 CentOS6.9上安裝cobbler2.6實現自動化安裝Linux系統cobbler可以批量部署Linux系統,並實現無人值守安裝。cobbler依賴的服務:dhcp,tftp,http,pxe,kickstart服務對應的端口號為dhcp--67,68;tftp--6

DELPHI XE2 ide設置技巧

ins 菜單 exp 完成 程序 彈出菜單 cto 功能 目錄 01. 修改主程序的編譯輸出目錄:Project - Options - Delphi Compiler - Output directory02. 修改單元文件編譯輸出目錄:Project - Options

linux下實現nginx安裝實現端口區分,域名區分

方便 img per 修改配置文件 mpat 直接 exp reg 獨立 nginx是一款高性能的http服務器/反向代理服務器及電子郵件代理服務器. 官方網站: http://nginx.org/ 1、http服務器。Nginx是一個http服務可以獨立提供http服務。

基於kickstart實現網絡共享以及制作光盤和U盤實現半自動安裝centos6系統

centos 一、使用kickstart實現網絡共享半自動化安裝。 ①在centos6上安裝system-config-kickstart、ftpd包。 ②使用system-config-kickstart命令,編輯裏面的內容,該文件生成ks.cfg文件。 修改完之後在File菜單中選擇Sa

kickstart模式實現批量安裝centos7.x系統

es2017 eth1 first 動態 centos7.x bios pre 順序 sub 1.1 安裝系統的方法   l 光盤(ISO文件,光盤的鏡像文件)===>>每一臺物理機都得給一個光驅,如果用外置光驅的話,是不是每臺機器都需要插一下   l

如何利用PXE+kickstart實現批量安裝系統

pxe 無人值守 批量裝系統 kickstart PXE網絡快速自動安裝系統,以下實驗環境均在RedHat 7.2 配置PXE網絡裝機服務器,為了避免防火墻與selinux的幹擾,改為信任以及寬松模式 1. 將防火墻狀態設置為trusted 2.SELinux當前修改為permissiv

kickstart/anaconda實現自動安裝

kickstart/anaconda實現kickstart是一個利用Anconda工具實現服務器自動化安裝的方法;通過生成的kickstart配置文件ks.cfg,服務器安裝可以實現從裸機到全功能服務的的非交互式(無人值守式)安裝配置; 1、安裝system-config-kickstart.noarch軟

ArcEngine地圖窗口指定區域導出指定DPI多格式---delphi/C#實現

common RM apu sage rto logical onf 出圖 mfc delphi/C#實現,其他語言稍微改下就行了。AE的編碼各個語言都差不多,這裏也沒用到某一語言的特性。 函數特點: 1.可以精確導出指定範圍的圖形要素 2.支持多格式.TIF,

pxe實現自動化安裝centos系統

端口 錯誤 安裝系統 打開 use time splay rom sha 實驗:pxe實現自動化安裝centos7系統 將配置搭建為如下框架: . ├── initrd.img ├── menu.c32 ├── pxelinux.0

國際化實現安裝腳手架vue

基於 false res route clas 頁面 直接 method cti 做這個項目用的是vue+element UI來實現的響應式布局,現主要說一下國際化這塊的實現。 第一步:新建文件夾i18n 第二步:配置cn.js、en.js等文件內容 cn.js imp

用系統為centos6的主機,搭建PXE服務器,實現批量安裝centos6,7系統

tex art ase pre 復制 tor log 文件名 vml 1. iptables -F setenforce 0 臨時關掉selinux,清掉防火墻 永久生效更改配置文件:vim /etc/sysconfig/selinux chkc

指令碼實現自動化安裝lamp&lnmp

#備註:前提是將lnmp和lnmp自動化指令碼寫好放在相應的路徑, 指令碼已寫好,請檢視我部落格中的 shell指令碼 專欄! 1 #!/bin/bash 2 #安裝lamp或者lnmp 3 4 path=/server/scripts #定義兩個指令碼路徑 5 [

通過kickstart實現全自動安裝虛擬機器

kickstart實現全自動安裝虛擬機器 概述: Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。 如果在安裝過程中(不只侷限於生成Kickstart安裝檔案的機器)出現要填寫引數的情況,安

Cobbler實現自動化安裝(下)--實現過程

 實驗環境 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [[email protected] ~]# ifconfig eno16777736

使用cobbler實現自動安裝系統

一、概念: cobbler:將pxe進行高階封裝,實現可以同時提供多種安裝系統。 repository:安裝樹,也就是我們常說的yum源。實現方式import匯入一個yum源;mirror建立一個yum源,但沒有檔案指向了一個網路yum源。 Distrbution:用

如何在Ubuntu16.04下面安裝字型

今天在Ubuntu16.04下面安裝CAJViewer的時候 提示這樣的問題: deepin.net.cnki.cajviewer:i386 depends on fonts-adobe-source-han-serif-cn:all; however: Package fon