WebView2 AddScriptToExecuteOnDocumentCreated - 如何在 C++ 中等待完成?
WebView2 AddScriptToExecuteOnDocumentCreated - How to wait for completion in C++?
在使用 WebView2
的 C++ (MFC) 应用程序中,我找不到简单地等待传递给 AddScriptToExecuteOnDocumentCreated()
的脚本准备就绪的方法。如果我在调用 AddScriptToExecuteOnDocumentCreated()
.
后添加一些等待代码(例如 WaitForSingleObject()
),我的 ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler()
就不会被调用
无需等待,就到达了 ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler()
,我可以看到它在消息线程上被调用。然后,显然,如果我必须让 UI(即消息线程)等待,它就无法工作。
有人知道我们应该如何正确使用它吗?
好的,我找到了解决问题的方法。虽然我可以使用旧的脏 MFC 消息泵技巧(我真的不喜欢)让它工作,但我最终可以重构一些代码并直接从处理程序调用导航。很简单。感谢您的回复。
auto res = webView->AddScriptToExecuteOnDocumentCreated(L"Some script", Microsoft::WRL::Callback<ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler>( [](HRESULT error, PCWSTR id)->HRESULT { // call Navigate here return S_OK; }).Get());
在使用 WebView2
的 C++ (MFC) 应用程序中,我找不到简单地等待传递给 AddScriptToExecuteOnDocumentCreated()
的脚本准备就绪的方法。如果我在调用 AddScriptToExecuteOnDocumentCreated()
.
WaitForSingleObject()
),我的 ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler()
就不会被调用
无需等待,就到达了 ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler()
,我可以看到它在消息线程上被调用。然后,显然,如果我必须让 UI(即消息线程)等待,它就无法工作。
有人知道我们应该如何正确使用它吗?
好的,我找到了解决问题的方法。虽然我可以使用旧的脏 MFC 消息泵技巧(我真的不喜欢)让它工作,但我最终可以重构一些代码并直接从处理程序调用导航。很简单。感谢您的回复。
auto res = webView->AddScriptToExecuteOnDocumentCreated(L"Some script", Microsoft::WRL::Callback<ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler>( [](HRESULT error, PCWSTR id)->HRESULT { // call Navigate here return S_OK; }).Get());