Проблема инициализации CefSharp в моем проекте WPFC#

Место общения программистов C#
Ответить
Anonymous
 Проблема инициализации CefSharp в моем проекте WPF

Сообщение Anonymous »

Я пытаюсь разработать эквивалент webview2, используя CefSharp, потому что мне нужна обратная совместимость для систем, которые не поддерживают .Net 8/10. Это шаги, которые я выполнил после создания проекта приложения WPF (.Net Framework) – v4.8 в своем решении.

app.manifest

Код: Выделить всё

































PerMonitorV2




App.xaml/.xaml.cs

Код: Выделить всё

    public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

bool cefInitialized = InitializeCef();
if (!cefInitialized)
{
Shutdown();
return;
}

var main = new MainWindow();
main.Show();
}

private bool InitializeCef()
{
if (Cef.IsInitialized ?? false) return true;

string subprocessPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CefSharp.BrowserSubprocess.exe");
var settings = new CefSettings
{
CachePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cache"),
LogFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cef.log"),
LogSeverity = LogSeverity.Verbose,
BrowserSubprocessPath = subprocessPath,
MultiThreadedMessageLoop = true
};

settings.DisableGpuAcceleration();

var initialized = Cef.Initialize(settings, performDependencyCheck: true);
if (!initialized)
{
var exitCode = Cef.GetExitCode();
MessageBox.Show($"CEF initialisation failed.  Code: '{exitCode}'.", "Critical Error", MessageBoxButton.OK, MessageBoxImage.Error);
return false;
}

return true;
}

protected override void OnExit(ExitEventArgs e)
{
if (Cef.IsInitialized ?? false)
{
Cef.Shutdown();
}
base.OnExit(e);
}
}

MainWindow.xaml/.xaml.cs

Код: Выделить всё

    public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Browser.Address = "https://www.google.com";
}
}
ПРОБЛЕМА
Я заметил, что при запуске, когда я инициализирую CEF, в этой части кода:

Код: Выделить всё

var initialized = Cef.Initialize(settings, performDependencyCheck: true);
Метод устанавливает для инициализации значение false, но все равно загружает страницу Google.
Мне не нравится, что подпроцесс открывается со страницей Google; Я хочу, чтобы основной процесс загружал окно для отображения страницы Google. Прямо сейчас я получаю сообщение об ошибке инициализации CEF с кодом NormalExitAutoDeElevated, но страница все еще открыта. Я хотел бы понять, как это работает, и решить эту проблему.
Надеюсь, вы мне поможете.

Подробнее здесь: https://stackoverflow.com/questions/798 ... pf-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»