🚀 5分钟快速启动FBro浏览器
总访问量:--
访客数:--
本页阅读:--
目标:在5分钟内创建您的第一个FBro浏览器应用程序!
难度:⭐⭐☆☆☆ 新手友好
时间:约5分钟
📋 前置要求
🔧 开发环境
- Visual Studio 2019 或更高版本
- .NET Framework 4.8 (推荐)或 .NET Framework 4.6+
- Windows 10/11 操作系统
📦 必需文件
🎯 推荐方式:使用NuGet包
- 添加NuGet程序包:
FBroSharp.Common
📚 官方资源
💡 提示:推荐使用NuGet包管理器安装,这样可以自动处理依赖关系和版本更新。
🏃♂️ 快速开始
第1步:创建项目 (1分钟)
- 打开Visual Studio
- 创建新项目:
- 选择
Windows Forms App (.NET Framework) - 项目名称:
MyFirstFBroApp - 框架版本:
.NET Framework 4.8 - 点击
创建
- 选择
第2步:添加引用 (1分钟)
🎯 方式一:使用NuGet包(推荐)
- 右键点击项目 →
管理NuGet程序包 - 点击浏览,搜索:
FBroSharp.Common - 点击安装
第3步:创建初始化事件类 (1分钟)
首先创建一个新类 InitEvent.cs:
csharp
using FBroSharp;
using FBroSharp.Const;
using FBroSharp.Event;
using FBroSharp.Lib;
using System;
using System.Reflection;
using System.Windows.Forms;
namespace MyFirstFBroApp
{
public class InitEvent : FBroInitEvent
{
//即将处理命令行
public override void OnBeforeCommandLineProcessing(string process_type, IFBroSharpCommandLine cmd)
{
// 禁用GPU加速(可选,提高兼容性)
cmd.DisableGpuBlockList();
cmd.DisableGpuCache();
Console.WriteLine($"OnBeforeCommandLineProcessing: {process_type}");
}
//初始化完毕
public override void OnContextInitialized()
{
Console.WriteLine("FBro初始化完成!");
}
public override void OnBeforeChildProcessLaunch(IFBroSharpCommandLine command_line)
{
Console.WriteLine("子进程启动中...");
}
public override bool OnProcessMessageReceived(IFBroSharpBrowser browser, IFBroSharpFrame frame, FBroSharpProcessId source_process, IFBroSharpProcessMessage message)
{
// 处理跨进程消息
var list = message.GetArgumentList();
MessageBox.Show($"{message.GetName()}: {list.GetString(0)}", "进程消息");
return true; // 返回true表示数据处理完毕
}
}
}第4步:修改Program.cs入口 (1分钟)
⚠️ 重要:FBro必须在Program.cs的Main函数中初始化!
修改 Program.cs:
csharp
using FBroSharp;
using System;
using System.IO;
using System.Windows.Forms;
namespace MyFirstFBroApp
{
internal static class Program
{
[STAThread]
static void Main()
{
// 🚀 FBro初始化配置
FBroSharpInitSet initSet = new FBroSharpInitSet
{
// 设置缓存目录
cache_path = Directory.GetCurrentDirectory() + "\\Cache\\CachePath\\",
// 设置用户目录
user_data_path = Directory.GetCurrentDirectory() + "\\Cache\\UserPath\\",
// 设置根缓存目录(必须是缓存目录的父目录)
root_cache_path = Directory.GetCurrentDirectory() + "\\Cache\\",
// 启用多线程消息循环
multi_threaded_message_loop = true,
// 设置子进程路径(可选)
browser_subprocess_path = Directory.GetCurrentDirectory() + "\\FBroSubprocess.exe",
// 本地化语言
locale = "zh-CN",
// 日志级别:只有错误时才记录
log_severity = FBroSharpLogSeverity.ERROR
};
// 创建初始化事件处理器
InitEvent initEvent = new InitEvent();
// 🎯 执行FBro初始化
if (!FBroSharpInitControl.InitPro(initSet, initEvent))
{
MessageBox.Show("FBro初始化失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// 标准Windows Forms初始化
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 启动主窗体
Application.Run(new Form1());
// 🔚 程序退出时释放FBro资源
FBroSharpInitControl.Shutdown(false);
}
}
}第5步:创建浏览器事件处理类 (1分钟)
创建一个新类 BrowserEvent.cs:
csharp
using FBroSharp;
using FBroSharp.Event;
using FBroSharp.Lib;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace MyFirstFBroApp
{
/// <summary>
/// 浏览器列表管理类
/// </summary>
public class BrowserList
{
public static List<FBroSharpBrowser> data = new List<FBroSharpBrowser>();
}
/// <summary>
/// 浏览器事件回调处理类
/// 继承自FBroSharpBrowserEvent,处理浏览器的各种事件
/// </summary>
public class BrowserEvent : FBroSharpBrowserEvent
{
/// <summary>
/// 浏览器创建完成事件
/// </summary>
public override void OnAfterCreated(IFBroSharpBrowser browser, IFBroSharpDictionaryValue extrainfo)
{
Console.WriteLine("浏览器创建完成!");
// 判断是否为后台浏览器
bool isBackground = extrainfo?.GetBool("是否为后台") ?? false;
if (!isBackground)
{
BrowserList.data.Add((FBroSharpBrowser)browser);
Console.WriteLine($"前台浏览器创建完成,ID: {browser.GetIdentifier()}");
}
}
/// <summary>
/// 浏览器即将关闭事件
/// </summary>
public override void OnBeforeClose(IFBroSharpBrowser browser)
{
Console.WriteLine("浏览器即将关闭");
// 从浏览器列表中移除
for (int i = 0; i < BrowserList.data.Count; i++)
{
var temp_browser = BrowserList.data[i];
if (temp_browser.IsSame(browser))
{
BrowserList.data.RemoveAt(i);
Console.WriteLine($"浏览器已从列表中移除,剩余数量: {BrowserList.data.Count}");
break;
}
}
}
/// <summary>
/// 页面加载完成事件
/// </summary>
public override void OnLoadEnd(IFBroSharpBrowser browser, IFBroSharpFrame frame, int httpStatusCode)
{
if (frame.IsMain())
{
Console.WriteLine($"页面加载完成,状态码: {httpStatusCode}");
}
}
/// <summary>
/// 页面标题改变事件
/// </summary>
public override void OnTitleChange(IFBroSharpBrowser browser, string title)
{
Console.WriteLine($"页面标题: {title}");
}
}
}第6步:修改Form1.cs使用正确的API (1分钟)
现在 Form1.cs 使用官方的创建浏览器方法:
csharp
using FBroSharp;
using System;
using System.Windows.Forms;
namespace MyFirstFBroApp
{
public partial class Form1 : Form
{
private string browserFlag; // 浏览器标识
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e)
{
CreateBrowser();
}
private void CreateBrowser()
{
try
{
// 🎯 生成唯一的浏览器标识
browserFlag = $"my_first_browser_{DateTime.Now:yyyyMMddHHmmss}";
// 🌐 配置浏览器窗口信息
FBroSharpWindowsInfo windowsInfo = new FBroSharpWindowsInfo
{
parent_window = this.Handle, // 父窗口句柄
x = 0, // X坐标
y = 0, // Y坐标
width = this.ClientSize.Width, // 宽度
height = this.ClientSize.Height // 高度
};
// 📝 创建额外信息
FBroSharpDictionaryValue extraInfo = FBroSharpDictionaryValue.Create();
extraInfo.SetBool("是否为后台", false);
extraInfo.SetString("创建时间", DateTime.Now.ToString());
extraInfo.SetString("用途", "快速启动示例");
// 🎉 创建浏览器事件处理器
BrowserEvent browserEvent = new BrowserEvent();
// 🚀 使用官方API创建浏览器
FBroSharpControl.Create(
"https://www.baidu.com", // 初始URL
windowsInfo, // 窗口配置
default, // 浏览器设置(使用默认)
default, // 请求上下文(使用默认)
extraInfo, // 额外信息
browserEvent, // 事件处理器
default, // 事件禁用控制(使用默认)
browserFlag // 用户标识
);
this.Text = $"我的第一个FBro浏览器 - {browserFlag}";
Console.WriteLine($"浏览器创建请求已发送,标识: {browserFlag}");
}
catch (Exception ex)
{
MessageBox.Show($"创建浏览器失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine($"创建浏览器失败: {ex.Message}");
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
// 📐 调整浏览器大小
if (!string.IsNullOrEmpty(browserFlag))
{
var browser = FBroSharpBrowserListControl.GetBrowserFromFlag(browserFlag);
if (browser != null && browser.IsValid())
{
// 重新设置浏览器大小
browser.GetHost().WasResized();
}
}
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
// 🔚 关闭浏览器
if (!string.IsNullOrEmpty(browserFlag))
{
var browser = FBroSharpBrowserListControl.GetBrowserFromFlag(browserFlag);
if (browser != null && browser.IsValid())
{
browser.CloseBrowser(true);
}
}
base.OnFormClosed(e);
}
}
}第4步:运行测试 (1分钟)
- 按F5运行程序
- 等待初始化完成
- 查看结果:应该显示一个包含百度首页的浏览器窗口
🎉 成功了!您的第一个FBro浏览器
如果一切顺利,您现在应该看到:
- ✅ 一个窗体应用程序
- ✅ 内嵌的浏览器显示百度首页
- ✅ 可以正常浏览网页
🔧 常见问题解决
待整理
🚀 下一步建议
恭喜您成功创建了第一个FBro浏览器应用!现在您可以:
📖 深入学习
- FBro浏览器功能简介 - 了解完整功能概览
- FBro初始化 - 深入学习初始化配置
- FBro创建浏览器 - 掌握浏览器创建技巧
🎯 实践项目
- 添加导航按钮:前进、后退、刷新、首页
- 地址栏功能:让用户输入网址跳转
- 书签管理:保存和管理常用网站
- 多标签页:创建多个浏览器实例
💡 高级功能
- JavaScript交互 - 与网页进行双向通信
- 用户交互事件 - 模拟鼠标键盘操作
- 网络和数据管理 - Cookie管理和网络拦截
- 高级功能 - 插件、指纹伪装等
📞 需要帮助?
如果在使用过程中遇到问题,欢迎联系:
| 联系方式 | 信息 |
|---|---|
| 1098901025 | |
| 💚 微信 | zhx_ms |
| 📺 B站 | @莫生 |
| 🌐 博客 | https://msblog.cc/ |
💡 实用提示
🔥 开发技巧
- 使用user_flag:为每个浏览器设置唯一标识,便于管理
- 异常处理:始终使用try-catch包裹FBro相关操作
- 资源释放:应用关闭时记得调用销毁方法
📚 推荐阅读顺序
- 本快速启动指南 ✅
- FBro浏览器功能简介
- 浏览器生命周期管理
- JavaScript交互
- 根据需求选择其他功能模块
🎉 恭喜您成功入门FBro浏览器开发!
💡 记住:实践是最好的老师。多写代码,多看文档,多提问题!