如何检测何时添加,删除或更改字体?

时间:2019-06-18 05:24:21

标签: c# wpf fonts

这与检测到whether字体已安装不同。我正在制作WPF应用程序,我希望该应用程序能够对用户实时安装或卸载字体作出反应。我怎样才能做到这一点?例如,是否可以使用任何方法与Windows字体缓存服务进行交互?

2 个答案:

答案 0 :(得分:1)

正如Jimi所建议的那样,在主窗口中侦听WM_FONTCHANGE消息使我能够检测到何时添加或删除了字体。

答案 1 :(得分:0)

也许是2种方式之一

  1. hackiest 方式可能监视%windir%\fonts文件夹,但是您将无法保证它们已加载资源并且可用< / p>

  2. 将DLL注入单元写入 hook 并代理AddFontResource / AddFontResourceEx Api调用,然后您将知道何时加载了字体资源

您可能会发现这对于了解如何将字体加载到系统中很有用

Font Installation and Deletion

  

应用程序只能使用字体来绘制文本   驻留在指定设备上或安装在系统字体表中。   字体表是一个内部数组,用于标识所有非设备   应用程序可用的字体。一个应用程序可以   检索设备上当前安装或存储的字体的名称   在内部字体表中,通过调用EnumFontFamilies或   选择字体功能。

     

...