@@ -19,17 +19,36 @@ EventRegistrationToken m_newWindowRequestedToken = {};
1919m_webviewEventSource->add_NewWindowRequested (
2020 Callback<ICoreWebView2NewWindowRequestedEventHandler>(
2121 [this](ICoreWebView2* sender, ICoreWebView2NewWindowRequestedEventArgs* args)
22- -> HRESULT {
23- wil::com_ptr<ICoreWebView2NewWindowRequestedEventArgs2> args2;
22+ -> HRESULT
23+ {
24+ wil::com_ptr<ICoreWebView2NewWindowRequestedEventArgs2> args2;
2425
25- if(SUCCEEDED(args->QueryInterface(IID_PPV_ARGS(&args2)))) {
26- wil::unique_cotaskmem_string name;
27- CHECK_FAILURE(args2->get_Name(&name));
28- }
26+ if(SUCCEEDED(args->QueryInterface(IID_PPV_ARGS(&args2))))
27+ {
28+ wil::unique_cotaskmem_string name;
29+ CHECK_FAILURE(args2->get_Name(&name));
30+
31+ wil::unique_cotaskmem_string uri;
32+ CHECK_FAILURE(args->get_Uri(&uri));
33+
34+ // Example usage of how the customer would use the window
35+ // name to handle special cases such as "openInNewBrowser"
36+ // which deviate from the normal handling of a new window.
37+ if (wcscmp(name.get(), L"openInNewBrowser") == 0)
38+ {
39+ ShellExecute(NULL, "open", uri.get(),
40+ NULL, NULL, SW_SHOWNORMAL);
41+ args->put_Handled(true);
42+ }
43+ else
44+ {
45+ HandleNormalNewWindow();
46+ }
47+ }
2948
3049 return S_OK;
31- })
32- .Get(),
50+ })
51+ .Get(),
3352 &m_newWindowRequestedToken);
3453```
3554
@@ -40,7 +59,19 @@ webView.CoreWebView2.NewWindowRequested += WebView_NewWindowRequested;
4059void WebView_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
4160{
4261 string newWindowName = e.Name;
43- MessageBox.Show(this, newWindowName);
62+
63+ // Example usage of how the customer would use the window
64+ // name to handle special cases such as "openInNewBrowser"
65+ // which deviate from the normal handling of a new window.
66+ if (newWindowName == "openInNewBrowser")
67+ {
68+ Process.Start(e.Uri);
69+ e.Handled = true;
70+ }
71+ else
72+ {
73+ HandleNormalNewWindow();
74+ }
4475}
4576```
4677
@@ -51,7 +82,7 @@ void WebView_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEve
5182[uuid(9bcea956-6e1f-43bc-bf02-0a360d73717b), object, pointer_default(unique)]
5283interface ICoreWebView2NewWindowRequestedEventArgs2 : ICoreWebView2NewWindowRequestedEventArgs {
5384 /// Gets the name of the new window.
54- [propget] HRESULT Name([out, retval] LPWSTR* name );
85+ [propget] HRESULT Name([out, retval] LPWSTR* value );
5586}
5687```
5788
0 commit comments