配置应用
概述
WinFormium 使用 WinFormiumApp
类的静态方法 CreateBuilder
来创建应用程序的构建器 AppBuilder
。在构建器中您可以设置 CEF 的环境参数、应用程序的运行模式、应用程序的用户数据文件夹、应用程序的资源文件夹等。
AppBuilder
提供了一系列的方法用于配置 WinFormium 应用程序,在您配置完这些参数后,使用 Build
方法创建一个 WinFormium 应用程序实例并使用 Run
方法来启动应用程序。
var app = WinFormiumApp.CreateBuilder()
// 在这里配置应用程序
// ...
.Build()
.Run();
请参考本章节内容了解如何配置 WinFormium 应用程序。
使用启动配置
使用 WinFormium 应用构造器 AppBuilder
的 UseWinFormiumApp<T>()
泛型方法传入启动配置类,更多内容请参考《启动配置》。
启用内置浏览器
在使用 WinFormium 应用时,当用户点击应用程序中的链接时,WinFormium 应用会自动打开系统默认浏览器来打开链接。如果您希望使用 WinFormium 内置的浏览器窗口打开链接,您可以使用 AppBuilder.UseBuiltInBrowser()
方法启用内置浏览器。
var app = WinFormiumApp.CreateBuilder()
.UseBuiltInBrowser()
//...
;
配置应用程序的语言和区域性
WinFormium 应用程序默认使用当前系统的语言和区域性,您可以使用 AppBuilder.UseCulture()
方法来配置应用程序的语言和区域性。UserCulture
方法接受一个 string
类型的参数,该参数为语言和区域性的标识符,例如 zh-CN
表示中文简体,en-US
表示英文美国。
var app = WinFormiumApp.CreateBuilder()
.UseCulture("en-US")
//...
;
配置应用程序以单例模式运行
使用 AppBuilder.UseSingleInstance()
方法配置应用程序以单例模式运行,如果应用程序已经在运行,则可以选择激活已经运行的应用程序。UseSingleInstance
方法接受一个 Aciton<OnApplicationInstanceRunningHanlder>
参数,OnApplicationInstanceRunningHanlder
包含以下参数和方法:
- int ProcessId { get; } 已经运行的应用程序的进程 ID。
- IntPtr MainWindowHandle { get; } 已经运行的应用程序的主窗体句柄。
- Process RunningProcess { get; } 已经运行的应用程序的进程对象。
- void ActiveRunningInstance() 激活已经运行的应用程序。
var app = WinFormiumApp.CreateBuilder()
.UseSingleApplicationInstanceMode(handler =>
{
var retval = MessageBox.Show($"已经有一个实例在运行了:{handler.ProcessId}。\r\n是否打开其主窗体?", "单例模式已启用", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (retval == DialogResult.Yes)
{
handler.ActiveRunningInstance();
}
})
//...
;
配置服务
使用 AppBuilder.UseServices()
方法配置应用程序的服务,该方法接受一个 Action<IServiceCollection>
参数,该参数包含了一个 IServiceCollection
类型的参数,您可以在这里注册您的服务。使用 AppBuilder
服务将会在应用程序的每个进程中注册。
如果服务近需要在主进程中运行,则应该在 WinFormiumStartup
的 WinFormiumMain
方法中注册服务。有关 WinFormiumStartup
的详细信息,请参考《启动配置》。
启用开发工具菜单
在设计 WinFormium 应用程序时,使用 DevTools 调试工具是非常有用的。您可以在 Formium
中使用 OpenDevTools
方法打开 DevTools 调试工具。如果您希望在应用程序中启用 DevTools 菜单,您可以使用 AppBuilder.UseDevToolsMenu()
方法启用 DevTools 菜单,这样您就可以在任意位置单击鼠标右键,在上下文菜单中开启 DevTools。
var app = WinFormiumApp.CreateBuilder()
.UseDevToolsMenu()
//...
;
清空浏览器缓存
在 CEF 的接口中,没有提供清空浏览器缓存的方法。虽然 WinFormium 提供了 AppBuilder.ClearCache()
方法来清空浏览器缓存,但这是使用了非常暴力的方式来清空缓存,该方法会删除 CEF 用户数据文件夹中的 Cache
文件夹,这样做的后果是您的应用程序中的所有缓存都会被清空,包括 Cookie、浏览器历史记录等,因此您无法指定删除某种类型的缓存。
并且,当 CEF 加载后会锁定用户数据文件夹,这样您就无法删除用户数据文件夹中的文件,因此您必须在 CEF 加载前清空缓存。
var app = WinFormiumApp.CreateBuilder()
.ClearCache()
//...
;