# cursor自动化编程FBro浏览器 **Repository Path**: yixin6/cursor-FBrowserCEF3lib ## Basic Information - **Project Name**: cursor自动化编程FBro浏览器 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-11-01 - **Last Updated**: 2025-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FBro浏览器项目集合 这是一个基于FBroSharp框架的C# Windows Forms浏览器项目集合,包含多个完整的浏览器应用示例。 ## 项目简介 FBroSharp是一个基于CEF(Chromium Embedded Framework)的.NET浏览器框架,本仓库展示了如何使用FBroSharp创建功能完整的桌面浏览器应用程序。 ## 视频演示 https://b23.tv/VL1u4Uo ## 视频用到的工具 - cursor - MCP,https://mcp.msblog.cc/public/help - 提示词,https://mcp.msblog.cc/public/help - FBrowserCEF3lib,https://fbrowser.site/ ## 截图 ![image-20251005162406217](https://img.msblog.cc/img/image-20251005162406217.png) ![image-20251005162335766](https://img.msblog.cc/img/image-20251005162335766.png) ![image-20251005165651547](https://img.msblog.cc/img/image-20251005165651547.png) ![image-20251005201432608](https://img.msblog.cc/img/image-20251005201432608.png) ![image-20251007142344470](https://img.msblog.cc/img/image-20251007142344470.png) ![image-20251007142416550](https://img.msblog.cc/img/image-20251007142416550.png) ![image-20251007142307279](https://img.msblog.cc/img/image-20251007142307279.png) ## 项目列表 ### 1. FBro创建浏览器示例 **目录**: `FBro创建浏览器2025年10月5日130417/` 完整的单窗口浏览器应用程序,演示了FBro框架的核心功能: - ✅ FBro框架初始化和配置 - ✅ 嵌入式浏览器创建(嵌入到Panel控件) - ✅ URL导航和地址栏管理 - ✅ 前进/后退/刷新功能 - ✅ 页面加载状态显示 - ✅ 浏览器事件处理 - ✅ 窗口自动调整大小 - ✅ 弹窗拦截(在当前窗口打开) **关键特性**: - 使用MCP(Model Control Protocol)接口 - 完整的事件处理机制 - 线程安全的UI更新 - 支持嵌入式浏览器 [查看详细文档](FBro创建浏览器2025年10月5日130417/README.md) --- ### 2. 多标签页浏览器 **目录**: `多标签页浏览器/` 功能更强大的多标签页浏览器应用,支持: - ✅ 多标签页管理(新建/关闭标签页) - ✅ 每个标签页独立的浏览器实例 - ✅ 标签页标题自动更新 - ✅ 切换标签页时自动同步地址栏 - ✅ 独立的浏览历史记录 - ✅ 标签页级别的前进/后退/刷新 - ✅ 完整的资源清理机制 **技术亮点**: - 每个标签页使用唯一的`user_flag`标识 - 独立的浏览器实例和事件处理器 - 动态创建和销毁浏览器 - 窗口自适应调整 [查看详细文档](多标签页浏览器/README.md) --- ## 技术栈 - **开发语言**: C# - **框架版本**: .NET Framework 4.8 - **UI框架**: Windows Forms - **浏览器引擎**: FBroSharp (基于CEF) - **NuGet包**: - FBroSharp.Common (v4.20.39 / v5.16.13) - FBroSharp.x86 - FBroSharp.x64 ## 系统要求 - **操作系统**: Windows 10/11 - **开发工具**: Visual Studio 2019 或更高版本 - **.NET Framework**: 4.8 - **必需文件**: FBroSubprocess.exe(包含在项目中) ## 快速开始 ### 1. 克隆仓库 ```bash git clone https://gitee.com/MoSheng2020/cursor-FBrowserCEF3lib.git cd cursor-FBrowserCEF3lib ``` ### 2. 打开解决方案 使用Visual Studio打开 `FBroMCP.sln` ### 3. 还原NuGet包 ```bash nuget restore FBroMCP.sln ``` 或在Visual Studio中右键解决方案 → "还原NuGet包" ### 4. 编译项目 选择项目 → 按F6编译,或选择"生成" → "生成解决方案" ### 5. 运行 按F5运行项目,或选择"调试" → "开始调试" ## 项目结构 ``` FBroMCP/ ├── FBroMCP.sln # Visual Studio 解决方案文件 ├── README.md # 本文档 │ ├── FBro创建浏览器2025年10月5日130417/ # 单窗口浏览器示例 │ ├── Program.cs # 应用程序入口点 │ ├── InitEvent.cs # FBro初始化事件 │ ├── Form1.cs # 主窗体逻辑 │ ├── Form1.Designer.cs # 窗体设计器代码 │ ├── BrowserEvent.cs # 浏览器事件处理器 │ ├── README.md # 项目文档 │ └── bin/Debug/ # 编译输出(包含CEF文件) │ ├── 多标签页浏览器/ # 多标签页浏览器示例 │ ├── Program.cs # 应用程序入口点 │ ├── InitEvent.cs # FBro初始化事件 │ ├── Form1.cs # 主窗体逻辑 │ ├── Form1.Designer.cs # 窗体设计器代码 │ ├── BrowserEvent.cs # 浏览器事件处理器 │ ├── README.md # 项目文档 │ └── bin/Debug/ # 编译输出 │ └── packages/ # NuGet包目录 ├── FBroSharp.Common.4.20.39/ ├── FBroSharp.Common.5.16.13/ ├── FBroSharp.x64.4.20.39/ ├── FBroSharp.x64.5.16.13/ ├── FBroSharp.x86.4.20.39/ └── FBroSharp.x86.5.16.13/ ``` ## 核心功能说明 ### FBro框架初始化 ```csharp // 配置FBro框架 FBroSharpInitSet set = new FBroSharpInitSet { cache_path = Path.Combine(baseCachePath, "CachePath") + "\\", user_data_path = Path.Combine(baseCachePath, "UserPath") + "\\", root_cache_path = baseCachePath + "\\", multi_threaded_message_loop = true, browser_subprocess_path = Path.Combine(Directory.GetCurrentDirectory(), "FBroSubprocess.exe"), locale = "zh-CN", persist_session_cookies = true, log_severity = FBroSharpLogSeverity.ERROR }; // 初始化框架 InitEvent init_event = new InitEvent(); FBroSharpInitControl.InitPro(set, init_event); ``` ### 创建浏览器实例 ```csharp // 配置嵌入式浏览器窗口 FBroSharpWindowsInfo windowInfo = new FBroSharpWindowsInfo { parent_window = panelBrowser.Handle, // 嵌入到Panel控件 x = 0, y = 0, width = panelBrowser.Width, height = panelBrowser.Height, window_name = "FBro浏览器" }; // 创建浏览器设置 FBroSharpBrowserSetting settings = new FBroSharpBrowserSetting(); // 创建事件处理器 BrowserEvent browserEvent = new BrowserEvent(this); // 创建浏览器 FBroSharpControl.CreatBrowser( "https://www.baidu.com", windowInfo, settings, null, null, browserEvent, default, "my_browser" // user_flag ); ``` ### 浏览器操作 ```csharp // 获取浏览器实例 var browser = FBroSharpBrowserListControl.GetBrowserFromFlag("my_browser"); // 导航到URL if (browser != null && browser.IsValid) { browser.GetMainFrame().LoadURL("https://www.google.com"); } // 刷新页面 browser.Reload(); // 前进/后退 browser.GoForward(); browser.GoBack(); // 关闭浏览器 browser.CloseBrowser(true, true); ``` ## 关键技术要点 ### 1. 必需的Using语句 ```csharp using FBroSharp; // FBroSharpControl, FBroSharpBrowserListControl using FBroSharp.Lib; // IFBroSharpBrowser, IFBroSharpFrame using FBroSharp.Value; // FBroSharpWindowsInfo, FBroSharpBrowserSetting using FBroSharp.Event; // FBroSharpBrowserEvent using FBroSharp.DataType; // FBroSharpEventDisableControl using FBroSharp.Const; // 常量和枚举 ``` ### 2. 类型名称注意事项 - ✅ `FBroSharpWindowsInfo` (注意:Windows有's') - ✅ `FBroSharpBrowserSetting` (注意:单数形式) - ✅ `browser.IsValid` (属性,不是方法!) ### 3. 线程安全 所有UI更新必须使用`Invoke`确保线程安全: ```csharp public void UpdateStatus(string message) { if (InvokeRequired) { Invoke(new Action(() => UpdateStatus(message))); return; } lblStatus.Text = message; } ``` ### 4. 弹窗控制 在`OnBeforePopup`事件中拦截弹窗,在当前窗口打开: ```csharp public override bool OnBeforePopup(...) { frame.LoadURL(target_url); return true; // true = 阻止弹窗,false = 允许弹窗 } ``` ## 常见问题 ### Q: 编译错误:找不到FBroSharpControl **A**: 确保添加了 `using FBroSharp;` 命名空间 ### Q: 运行时错误:初始化失败 **A**: 检查以下几点: 1. FBroSubprocess.exe是否存在于程序根目录 2. 缓存目录是否可写 3. 没有其他FBro实例正在运行 ### Q: 浏览器窗口不显示 **A**: 确保: 1. Panel控件可见 2. 窗体Load事件已触发 3. parent_window参数设置正确 ### Q: 浏览器不随窗体调整大小 **A**: 实现Form_Resize事件,调用`browser.MoveWindow()`方法 ## 可扩展功能 可以通过FBro MCP工具添加更多功能: - 📝 表单自动填充 (`fbro_fill_input`) - 🖱️ 元素点击操作 (`fbro_click_element`) - ⚙️ JavaScript执行 (`fbro_execute_javascript`) - 🍪 Cookie管理 (`fbro_manage_cookies`) - 🔒 代理设置 (`fbro_set_proxy`) - 📡 HTTP响应拦截 (`fbro_intercept_response`) - 📸 页面截图 (`fbro_capture_screenshot`) - 📥 文件下载管理 (`fbro_download_file`) - 🎨 右键菜单定制 (`fbro_context_menu`) ## 开发规范 ### Cursor AI 约束规则 项目包含严格的Cursor AI约束规则文件(`fbro-browser-constraints`),确保: - 避免常见编译错误 - 正确使用FBro API - 遵循最佳实践 - 保持代码一致性 ### 关键规则 1. **始终使用MCP工具**:不要手动编写FBro初始化代码 2. **InitEvent.cs必须是独立文件**:不要合并到Program.cs 3. **正确的方法签名**:`OnBeforeCommandLineProcessing`使用`IFBroSharpCommandLine` 4. **IsValid是属性**:不要加括号 `browser.IsValid` ✅, `browser.IsValid()` ❌ ## 许可证 本项目基于FBroSharp框架开发,仅用于学习和演示目的。使用FBroSharp需遵守其官方许可条款。 ## 技术支持 - **FBroSharp官方文档**: [查看文档] - **Issues**: [提交问题](https://gitee.com/MoSheng2020/cursor-FBrowserCEF3lib/issues) - **项目约束规则**: 查看各项目目录下的`fbro-browser-constraints`文件 ## 贡献指南 欢迎提交Issue和Pull Request! 1. Fork本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启Pull Request ## 更新日志 ### 2025-10-05 - ✅ 创建单窗口浏览器示例 - ✅ 创建多标签页浏览器示例 - ✅ 完善项目文档 - ✅ 添加Cursor AI约束规则 - ✅ 完整的MCP接口示例 ## 作者 墨生 (MoSheng) ## 致谢 感谢FBroSharp框架的开发者和贡献者!