WebView2 AddScriptToExecuteOnDocumentCreated - 如何在 C++ 中等待完成?

WebView2 AddScriptToExecuteOnDocumentCreated - How to wait for completion in C++?

在使用 WebView2 的 C++ (MFC) 应用程序中,我找不到简单地等待传递给 AddScriptToExecuteOnDocumentCreated() 的脚本准备就绪的方法。如果我在调用 AddScriptToExecuteOnDocumentCreated().

后添加一些等待代码(例如 WaitForSingleObject()),我的 ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler() 就不会被调用

无需等待,就到达了 ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler(),我可以看到它在消息线程上被调用。然后,显然,如果我必须让 UI(即消息线程)等待,它就无法工作。

有人知道我们应该如何正确使用它吗?

文档: https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2?view=webview2-1.0.1150.38#addscripttoexecuteondocumentcreated

好的,我找到了解决问题的方法。虽然我可以使用旧的脏 MFC 消息泵技巧(我真的不喜欢)让它工作,但我最终可以重构一些代码并直接从处理程序调用导航。很简单。感谢您的回复。

auto res = webView->AddScriptToExecuteOnDocumentCreated(L"Some script", Microsoft::WRL::Callback<ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler>(     [](HRESULT error, PCWSTR id)->HRESULT {     // call Navigate here   return S_OK; }).Get());