Skip to content

🚀 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分钟)

  1. 打开Visual Studio
  2. 创建新项目
    • 选择 Windows Forms App (.NET Framework)
    • 项目名称:MyFirstFBroApp
    • 框架版本:.NET Framework 4.8
    • 点击 创建

第2步:添加引用 (1分钟)

🎯 方式一:使用NuGet包(推荐)

  1. 右键点击项目管理NuGet程序包
  2. 点击浏览,搜索:FBroSharp.Common
  3. 点击安装

第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.csMain函数中初始化!

修改 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分钟)

  1. 按F5运行程序
  2. 等待初始化完成
  3. 查看结果:应该显示一个包含百度首页的浏览器窗口

🎉 成功了!您的第一个FBro浏览器

如果一切顺利,您现在应该看到:

  • ✅ 一个窗体应用程序
  • ✅ 内嵌的浏览器显示百度首页
  • ✅ 可以正常浏览网页

🔧 常见问题解决

待整理


🚀 下一步建议

恭喜您成功创建了第一个FBro浏览器应用!现在您可以:

📖 深入学习

  1. FBro浏览器功能简介 - 了解完整功能概览
  2. FBro初始化 - 深入学习初始化配置
  3. FBro创建浏览器 - 掌握浏览器创建技巧

🎯 实践项目

  1. 添加导航按钮:前进、后退、刷新、首页
  2. 地址栏功能:让用户输入网址跳转
  3. 书签管理:保存和管理常用网站
  4. 多标签页:创建多个浏览器实例

💡 高级功能

  1. JavaScript交互 - 与网页进行双向通信
  2. 用户交互事件 - 模拟鼠标键盘操作
  3. 网络和数据管理 - Cookie管理和网络拦截
  4. 高级功能 - 插件、指纹伪装等

📞 需要帮助?

如果在使用过程中遇到问题,欢迎联系:

联系方式信息
🐧 QQ1098901025
💚 微信zhx_ms
📺 B站@莫生
🌐 博客https://msblog.cc/

💡 实用提示

🔥 开发技巧

  • 使用user_flag:为每个浏览器设置唯一标识,便于管理
  • 异常处理:始终使用try-catch包裹FBro相关操作
  • 资源释放:应用关闭时记得调用销毁方法

📚 推荐阅读顺序

  1. 本快速启动指南 ✅
  2. FBro浏览器功能简介
  3. 浏览器生命周期管理
  4. JavaScript交互
  5. 根据需求选择其他功能模块

🎉 恭喜您成功入门FBro浏览器开发!

💡 记住:实践是最好的老师。多写代码,多看文档,多提问题!

如果文档对您有帮助,欢迎 请喝咖啡 ☕ | 软件发布 | 源码购买