FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 612|回复: 0

【C#】5.0 获取默认事件的使用

[复制链接]

签到天数: 695 天

[LV.9]以坛为家II

294

主题

606

回帖

1万

积分

超级版主

皇冠皇冠皇冠太阳

积分
17933

活跃会员热心会员永久VIP会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2026-2-4 18:00:43 | 显示全部楼层 |阅读模式
文档教程
教程类型: C#教程
备注说明: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 mosheng 于 2026-2-4 18:00 编辑

1、Program.cs中进行初始化

[C#] 查看源码 复制代码
// 设置授权码
FBroSharpVIPGlobalControl.SetAuthorizationCode("你的授权码");

// 设置DPI感知模式
FBroSharpInitControl.SetProcessDPI(FBroSharpDPI.SYSTEM_AWARE);

// 确定缓存路径
string cachePath;
if (!string.IsNullOrEmpty(cmdArgs.ProfileId))
{
    cachePath = Path.Combine(Directory.GetCurrentDirectory(), "Profiles", cmdArgs.ProfileId);
}
else
{
    cachePath = Path.Combine(Directory.GetCurrentDirectory(), "CacheData");
}

// 确保缓存目录存在
if (!Directory.Exists(cachePath))
{
    Directory.CreateDirectory(cachePath);
}

WriteLog($"缓存路径: {cachePath}");

FBroSharpInitSet set = new FBroSharpInitSet
{
    // 设置缓存目录
    cache_path = cachePath,

    // 启用事件消息循环
    multi_threaded_message_loop = true,

    // 设置执行子进程
    browser_subprocess_path = Path.Combine(Directory.GetCurrentDirectory(), "FBroSubprocess.exe"),

    // 本地化语言
    locale = "zh-CN",

    // 是否启用持久化cookie
    persist_session_cookies = true,

    // 日志模式
    log_severity = FBroSharpLogSeverity.ERROR
};

// 创建初始化事件,传递 config 以便 GetDefaultClient 能为新标签设置默认事件,mdArgs, wsClient, cmdArgs.Config这三个是我自己的需要的参数
InitEvent initEvent = new InitEvent(cmdArgs, wsClient, cmdArgs.Config);

// 执行初始化
if (!FBroSharpInitControl.InitPro(set, initEvent))
{
    Console.WriteLine("FBroSharpInitControl.InitPro 返回 false");
    return false;
}

WriteLog("FBroSharp 初始化成功");
return true;






2、在InitEvent.cs中的InitEvent
[C#] 查看源码 复制代码
namespace fbro
{
    public class InitEvent : FBroInitEvent
    {
        private readonly CommandLineArgs cmdArgs;
        private readonly WebSocketClient wsClient;
        private readonly FbroConfig config;

        public InitEvent(CommandLineArgs args, WebSocketClient wsClient = null, FbroConfig config = null)
        {
            this.cmdArgs = args;
            this.wsClient = wsClient;
            this.config = config;
        }


        /// <summary>
        /// 获取默认事件 - 谷歌模式下点击+号创建新标签时触发
        /// 在这里设置默认的BrowserEvent,确保新标签也能应用指纹配置
        /// </summary>
        public override void GetDefaultClient(IFBroSharpBrowser browser, string url, IFBroSharpUseExtraData user_settings)
        {
            Console.WriteLine($"GetDefaultClient: 创建新标签, URL={url}");

            // 使用实例配置或全局配置
            var configToUse = this.config ?? GlobalConfig.Config;
            var wsClientToUse = this.wsClient ?? GlobalConfig.WsClient;

            // 创建带有指纹配置的 BrowserEvent
            BrowserEvent browserEvent = new BrowserEvent(wsClientToUse, configToUse);

            // 设置默认事件
            user_settings.SetEvent(browserEvent, default);

            Console.WriteLine($"GetDefaultClient: 已设置默认事件, config={(configToUse != null ? "有效" : "null")}");
        }
}






如此设置在谷歌原生UI中点击 + 号创建的新标签浏览器可以继承自己自定义的浏览器事件了

e887804c6b9a0d232a89ecb439d6271c.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-9-17 06:22 , Processed in 0.024752 second(s), 14 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表