繁体   English   中英

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

[英]How can I detect when a font is added, removed, or changed?

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

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

也许是2种方式之一

  1. 骇人听闻的方法可能是监视%windir%\\fonts文件夹,但是您将无法保证它们已加载资源并且仍然可用

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

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

字体安装和删除

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

...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM