配置应用
概述
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()//...;
