C# 如何检测字体的添加、删除或更改时间?
这不同于检测是否安装了字体。我正在制作一个WPF应用程序,我希望该应用程序能够对用户实时安装或卸载字体做出反应。我该怎么做?例如,是否有任何方法可以与Windows字体缓存服务交互?可能是两种方法之一C# 如何检测字体的添加、删除或更改时间?,c#,wpf,fonts,C#,Wpf,Fonts,这不同于检测是否安装了字体。我正在制作一个WPF应用程序,我希望该应用程序能够对用户实时安装或卸载字体做出反应。我该怎么做?例如,是否有任何方法可以与Windows字体缓存服务交互?可能是两种方法之一 最黑客的方法可能是监视%windir%\font文件夹,但是您无法保证它们已加载资源且可用 编写一个dll注入单元来钩住并代理AddFontResource/AddFontResourceExApi调用,这样您就知道什么时候加载了字体资源 您可能会发现这有助于理解字体是如何加载到系统中的 应用程
%windir%\font
文件夹,但是您无法保证它们已加载资源且可用AddFontResource
/AddFontResourceEx
Api调用,这样您就知道什么时候加载了字体资源正如Jimi所建议的,在我的主窗口上监听
WM_FONTCHANGE
消息可以让我在添加或删除字体时进行检测 安装或卸载字体时,您会收到一条消息。未指定字体名称,但您可以在收到邮件时重新填充列表。您还可以使用FileSystemWatcher检测字体文件夹中的更改。但是我从来没有在这个任务中使用过它(我只是使用这个消息),不确定需要什么权限。FileSystemWatcher可以处理Fonts文件夹,当创建或删除每个字体文件时,您会收到通知。