gpt4 book ai didi

Java Chromium 嵌入式框架 (JCEF) 使用 Chromium 命令行

转载 作者:行者123 更新时间:2023-12-01 18:17:54 36 4
gpt4 key购买 nike

我尝试将 --ignore-gpu-blacklist 参数设置为 JCEF,但我找不到方法。我应该使用的方法是这样的:CefApp::onBeforeCommandLineProcessing(String, CefCommandLine)。但我找不到如何执行此操作的示例或良好说明。 CefCommandLine 是一个接口(interface),我找不到任何实现。

我发现的所有指令都与 CEF 有关,而不是与 JCEF 相关,并且显然存在不同的类。任何人都可以发布一个小示例,说明如何从字符串 str = "--ignore-gpu-blacklist"; 将 Chromium 参数传递给 CEF 吗?

最佳答案

您有多种可能性将参数从 JCEF 传递到 CEF/chromium。

1)最简单的方法:

public static void main(String [] args) {

[...]

ArrayList<String> mySwitches = new ArrayList<>();
mySwitches.add("--persist-session-cookies=true");
CefApp app = CefApp.getInstance(mySwitches.toArray(new String[mySwitches.size()]));
CefClient client = app.createClient();
CefBrowser browser = client.createBrowser("http://www.google.com", false, false);

[...]
}

只需创建一个字符串数组,其中包含要传递的所有开关,并在第一次调用该静态方法时将该数组分配给 CefApp.getInstance(..) 。

如果您只有一些简单的设置,您也可以使用 CefSettings 类并将对象传递给 getInstance()。除此之外,您可以将两者结合起来(有四种不同的“getInstance()”方法)。

2) 创建您自己的 CefAppHandler 实现来执行一些高级操作。

(a) 创建自己的 AppHandler:

public class MyAppHandler extends CefAppHandlerAdapter {
public MyAppHandler(String [] args) {
super(args);
}

@Override
public void onBeforeCommandLineProcessing(String process_type, CefCommandLine command_line) {
super.onBeforeCommandLineProcessing(process_type, command_line);
if (process_type.isEmpty()) {
command_line.appendSwitchWithValue("persist-session-cookies","true");
}
}
}

(b) 将 AppHandler 传递给 CefApp

public static void main(String [] args) {

[...]

MyAppHandler appHandler = new MyAppHandler(args);
CefApp.addAppHandler(appHandler);

CefApp app = CefApp.getInstance(args);
CefClient client = app.createClient();
CefBrowser browser = client.createBrowser("http://www.google.com", false, false);

[...]
}

使用这种方法,您将做两件事:

(a) 将程序参数 (args) 传递给 CefApp 并

(b) 您可以利用机会在 onBeforeCommandLineProcessing 中操纵解析参数的完整过程。

如果你打开JCEF详细主框架的示例代码,你会发现这种方法的实现是:-tests.detailed.MainFrame.MainFrame(boolean, String, String[])

因此实现 onBeforeCommandLineProcessing 等同于 CEF,但用 Java 而不是 C/C++ 编写。

问候,凯

关于Java Chromium 嵌入式框架 (JCEF) 使用 Chromium 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544562/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com