Note
ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ è¦ã§ãã ãµã¤ã³ã¤ã³ã¾ãã¯ãã£ã¬ã¯ããªã®å¤æ´ã試ããã¨ãã§ãã¾ãã
ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ è¦ã§ãã ãã£ã¬ã¯ããªã®å¤æ´ã試ããã¨ãã§ãã¾ãã
ãã®è¨äºã§ã¯ãç¬èªã® WebView2 ã³ã¼ããè¨è¿°ããæ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã æåã«ãµã³ãã«ãå®è¡ããå ´åã¯ã Win32 ãµã³ãã« ã¢ã㪠ã¾ã㯠WPF ãµã³ãã« ã¢ããªãªã©ã®å¥ã®ãµã³ãã« ã¢ããªã«é¢ããè¨äºãåç §ãã¦ãã ããã
ãã®è¨äºã§ã¯ãéçºãã¼ã«ãè¨å®ããWindows Presentation Foundation (WPF) ç¨ã®åæ WebView2 ã¢ããªã使ããæ¹æ³ã¨ããã®éç¨ã§ WebView2 ã®æ¦å¿µã«ã¤ãã¦å¦ç¿ããæ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã
ãã®ãã¥ã¼ããªã¢ã«ã§ã¯ãWPF ã¢ããªã±ã¼ã·ã§ã³ã¾ã㯠WPF ã¢ã㪠(.NET Framework) ããã¸ã§ã¯ã ãã³ãã¬ã¼ãã使ç¨ã㦠WPF ã¢ããªã使ããããã¸ã§ã¯ãã® WebView2 SDK ãã¤ã³ã¹ãã¼ã«ã㦠WebView2 ã追å ãã¾ãã
å®äºããããã¸ã§ã¯ã
ãã®ãã¥ã¼ããªã¢ã« ããã¸ã§ã¯ãã®å®æãããã¼ã¸ã§ã³ ã¯ã WebView2Samples ãªãã¸ããªã§å ¥æã§ãã¾ãã
- ãµã³ãã«å: WPF_GettingStarted
- ãªãã¸ã㪠ãã£ã¬ã¯ããª: WPF_GettingStarted
- ã½ãªã¥ã¼ã·ã§ã³ ãã¡ã¤ã«: WPFSample.sln
æé 1 - .NET ãµãã¼ãã使ç¨ã㦠Visual Studio ãã¤ã³ã¹ãã¼ã«ãã
ãã®ãã¥ã¼ããªã¢ã«ã§ã¯ãMicrosoft Visual Studio Code ã§ã¯ãªã Microsoft Visual Studio ãå¿ è¦ã§ãã ãã®è¨äºã§ã¯ã主㫠Visual Studio 2022 ã®ä½¿ç¨ã«ã¤ãã¦èª¬æãã¾ãã
Visual Studio ãã¤ã³ã¹ãã¼ã«ãã¾ãã å¿ è¦ãªããã¸ã§ã¯ã ãã³ãã¬ã¼ããåå¾ããã«ã¯ã 次ã®ããã« .NET ãã¹ã¯ãããéçº ãµãã¼ããã¤ã³ã¹ãã¼ã«ãã¾ãã
Visual Studio ã®ã¹ã¿ã¼ãã¢ããç»é¢ã«ããå ´åã¯ã[ æ°ããããã¸ã§ã¯ãã®ä½æ ] ãã¤ã¢ãã°ã®ä¸é¨ã¾ã§ã¹ã¯ãã¼ã«ãã[ ã³ã¼ããªãã§éã] ãªã³ã¯ãã¯ãªãã¯ãã¾ãã Visual Studio ãéãã¾ãã
Visual Studio ã§ã[ãã¼ã«] > [ãã¼ã«ã¨æ©è½ã®åå¾] ã鏿ãã¾ãã [Visual Studio Installer] ã¦ã£ã³ãã¦ãéãã[夿´] ãã¤ã¢ãã°ãéãã¾ãã
.NET ãã¹ã¯ãããéçºã¯ã¼ã¯ãã¼ãã鏿ãã¦ããã§ãã¯ãã¼ã¯ã表示ãããããã«ãã¾ãã
[ã¤ã³ã¹ãã¼ã«ã®è©³ç´°>.NET ãã¹ã¯ãããéçº>å³å´ã«å«ã¾ãã¦ããã»ã¯ã·ã§ã³ã§ã.NET ãã¹ã¯ãããéçºãã¼ã«ã¨ .NET Framework 4.7.2 éçºãã¼ã«ã®æ¨ªã«ãã§ãã¯ãã¼ã¯ã表示ããã¦ãããã¨ã確èªãã¾ãã
å³å´ã® [ ã¤ã³ã¹ãã¼ã«ã®è©³ç´°>.NET ãã¹ã¯ãããéçº>ãªãã·ã§ã³ ] ã»ã¯ã·ã§ã³ã§ãæ¬¡ã®æé ãå®è¡ãã¾ãã
- Visual Studio 2022 ã使ç¨ãã¦ããå ´åã¯ã .NET ç¨ã®éçºãã¼ã« ã鏿ããã¦ãããã¨ã確èªãã¾ãã
- Visual Studio 2019 ã使ç¨ãã¦ããå ´åã¯ã .NET éçºãã¼ã« ã鏿ããã¦ãããã¨ã確èªãã¾ãã
[ 夿´ ] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
ãã®ãã¥ã¼ããªã¢ã«ã¯ãVisual Studio 2017 ã§ãæ©è½ãã¾ãã Visual Studio ã®å¤ããã¦ã³ãã¼ãã«é¢ãããã¼ã¸ãåç §ãã¦ãã ããã .NET ãµãã¼ããã¤ã³ã¹ãã¼ã«ãã¦ãä¸è¨ã®æé ã¨åæ§ã«ãå¿ è¦ãªããã¸ã§ã¯ã ãã³ãã¬ã¼ããåå¾ãã¾ãã
æé 2 - åä¸ã¦ã£ã³ã㦠WebView2 ã¢ããªã使ãã
ã¾ãã1 ã¤ã®ã¡ã¤ã³ ã¦ã£ã³ãã¦ãå«ãåºæ¬çãªãã¹ã¯ããã ããã¸ã§ã¯ãã使ãã¾ãã
.NET Core/5/6 ããã¸ã§ã¯ã (æ°ãã)ãã¾ã㯠WPF ã¢ã㪠(.NET Framework) ããã¸ã§ã¯ã (å¤ã) ã®ã©ã¡ãã使ããããæ±ºå®ãã¾ãã 詳細ã«ã¤ãã¦ã¯ã以ä¸ãåç §ãã¦ãã ãã:
- .NET ã®å±¥æ´æ¦è¦ã¨æ¦è¦ã
- ã¦ã£ãããã£ã¢ã® .NET ã
以ä¸ã®è©²å½ããã»ã¯ã·ã§ã³ã«å¾ã£ã¦ãã ããã
.NET Core/5/6 ããã¸ã§ã¯ãã®ä½æ
.NET Core/5/6 ããã¸ã§ã¯ãã使ããå ´åã¯ãæ¬¡ã®æé ãå®è¡ãã¾ãã ãã以å¤ã®å ´åã¯ããWPF ã¢ã㪠(.NET Framework) ããã¸ã§ã¯ãã®ä½æãã«é²ã¿ã¾ãã
Visual Studio 2022 ãªã©ã® Microsoft Visual Studio ãéãã¾ãã
éãããã«ã§ã[ æ°ããããã¸ã§ã¯ãã®ä½æ] ãã¯ãªãã¯ãã¾ãã ã¾ãã¯ãVisual Studio ã®ã¡ã¤ã³ ã¦ã£ã³ãã¦ã§ã[ãã¡ã¤ã«>New>Project] ã鏿ãã¾ãã [ æ°ããããã¸ã§ã¯ãã®ä½æ ] ãã¤ã¢ãã°ãéãã¾ãã
[ ãã³ãã¬ã¼ãã®æ¤ç´¢ ] ããã¹ã ããã¯ã¹ã«ã
WPF Applicationãã¨å ¥åãã¾ãã [ æ°ããããã¸ã§ã¯ãã®ä½æ ] ããã«ã«ã¯ãå ¥åããããã¹ãã«ä¸è´ããã¤ã³ã¹ãã¼ã«æ¸ã¿ã®ããã¸ã§ã¯ã ãã³ãã¬ã¼ãã表示ããã¾ãã ãã®è¨äºã§ã¯ãVB ãã¤ã¢ãã°ã§ã¯ãªã C# ã示ãã¾ããã©ã¡ãã®è¨èªã WebView2 ã§ãµãã¼ãããã¦ãã¾ããVisual Studio 2022 ã使ç¨ãã¦ããå ´åã¯ã ã¿ã¤ãã« WPF ã¢ããªã±ã¼ã·ã§ã³ ã¨èª¬æããã¹ã .NET WPF ã¢ããªã±ã¼ã·ã§ã³ã使ããããã®ããã¸ã§ã¯ããå«ãããã¸ã§ã¯ã ãã³ãã¬ã¼ããã¯ãªãã¯ãã¾ãã
Visual Studio 2019 ã使ç¨ãã¦ããå ´åã¯ãã¿ã¤ãã« WPF ã¢ããªã±ã¼ã·ã§ã³ ã¨èª¬æããã¹ã .NET Core WPF ã¢ããªã±ã¼ã·ã§ã³ã使ããããã®ããã¸ã§ã¯ããããããã¸ã§ã¯ã ãã³ãã¬ã¼ããã¯ãªãã¯ãã¾ãã
ä¸è¨ã®ããã¸ã§ã¯ã ãã³ãã¬ã¼ããä¸è¦§ã«ãªãå ´åã¯ãã æé 1 - ä¸è¨ã® .NET ãµãã¼ãã使ç¨ã㦠Visual Studio ãã¤ã³ã¹ãã¼ã« ããããåç §ãã¦ã .NET ãã¹ã¯ãããéçºãã¼ã«ãã¤ã³ã¹ãã¼ã«ãã¾ãã
[ 次㸠] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
[ æ°ããããã¸ã§ã¯ãã®æ§æ: WPF ã¢ããªã±ã¼ã·ã§ã³ ] ãã¤ã¢ãã°ãéãã¾ãã
[ ããã¸ã§ã¯ãå ] ããã¹ã ããã¯ã¹ã«ã MyWpfDotnetCoreWv2App ãªã©ã®ããã¸ã§ã¯ãåãå ¥åãã¾ãã
[ å ´æ ] ããã¹ã ããã¯ã¹ã§ã
C:\Users\myusername\Documents\MyProjectsãªã©ã®ãã¼ã«ã« ãã©ã¤ãã®ãã¹ã鏿ãã[ 次㸠] ãã¿ã³ãã¯ãªãã¯ãã¾ãã[ è¿½å æ å ± ] ãã¤ã¢ãã°ã表示ããã[ ã¿ã¼ã²ãã ãã¬ã¼ã ã¯ã¼ã¯ ] ãããããã¦ã³ ãªã¹ãã表示ããã¾ãã
.NET 6.0 ãªã©ã.NET Core 3.1 以éã鏿ãã¾ãã ( .NET Core 3.0 ã鏿ããªãã§ãã ãã)ãæ¬¡ã«ã[ 使 ] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
Visual Studio ã§æåã® .NET Core WPF ã¢ããªã±ã¼ã·ã§ã³ ããã¸ã§ã¯ããéãã¾ãã
ãæé 3 - WebView2 ã使ç¨ããã«æåã®ããã¸ã§ã¯ãããã«ããã¦å®è¡ãããã«é²ã¿ã¾ãã
WPF ã¢ã㪠(.NET Framework) ããã¸ã§ã¯ãã®ä½æ
WPF ã¢ã㪠(.NET Framework) ããã¸ã§ã¯ãã使ããå ´åã¯ãæ¬¡ã®æé ãå®è¡ãã¾ãã ãã以å¤ã®å ´åã¯ãã æé 3 - WebView2 ã使ç¨ããã«æåã®ããã¸ã§ã¯ãããã«ããã¦å®è¡ãããã«é²ã¿ã¾ãã
Visual Studio 2022 ãªã©ã® Microsoft Visual Studio ãéãã¾ãã
éãããã«ã§ã[ æ°ããããã¸ã§ã¯ãã®ä½æ] ãã¯ãªãã¯ãã¾ãã ã¾ãã¯ãVisual Studio ã®ã¡ã¤ã³ ã¦ã£ã³ãã¦ã§ã[ãã¡ã¤ã«>New>Project] ã鏿ãã¾ãã [ æ°ããããã¸ã§ã¯ãã®ä½æ ] ãã¤ã¢ãã°ãéãã¾ãã
[ ãã³ãã¬ã¼ãã®æ¤ç´¢ ] ããã¹ã ããã¯ã¹ã«ã
WPF Appãã¨å ¥åãã¾ãã [ æ°ããããã¸ã§ã¯ãã®ä½æ ] ããã«ã«ã¯ãå ¥åããããã¹ãã«ä¸è´ããã¤ã³ã¹ãã¼ã«æ¸ã¿ã®ããã¸ã§ã¯ã ãã³ãã¬ã¼ãã表示ããã¾ãã ãã®è¨äºã§ã¯ãVB ãã¤ã¢ãã°ã§ã¯ãªã C# ã示ãã¾ããã©ã¡ãã®è¨èªã WebView2 ã§ãµãã¼ãããã¦ãã¾ããã¿ã¤ãã« WPF App (.NET Framework) ã¨èª¬æããã¹ããå«ãããã¸ã§ã¯ã ãã³ãã¬ã¼ãWindows Presentation Foundationã¯ã©ã¤ã¢ã³ã ã¢ããªã±ã¼ã·ã§ã³ãã¯ãªãã¯ãã¾ãã
ä¸è¨ã®ããã¸ã§ã¯ã ãã³ãã¬ã¼ããä¸è¦§ã«ãªãå ´åã¯ãã æé 1 - ä¸è¨ã® .NET ãµãã¼ãã使ç¨ã㦠Visual Studio ãã¤ã³ã¹ãã¼ã« ããããåç §ãã¦ã .NET ãã¹ã¯ãããéçºãã¼ã«ãã¤ã³ã¹ãã¼ã«ãã¾ãã
[ 次㸠] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
[æ°ããããã¸ã§ã¯ãã®æ§æ: WPF ã¢ã㪠(.NET Framework)] ãã¤ã¢ãã°ãéãã¾ãã
[ ããã¸ã§ã¯ãå ] ããã¹ã ããã¯ã¹ã«ã MyWpfDotnetFwkWv2App ãªã©ã®ããã¸ã§ã¯ãåãå ¥åãã¾ãã
[ å ´æ ] ããã¹ã ããã¯ã¹ã§ããã¼ã«ã« ãã©ã¤ãã®ãã¹ (
C:\Users\myusername\Documents\MyProjectsãªã©) ã鏿ãã¾ãã[ãã¬ã¼ã ã¯ã¼ã¯] ãããããã¦ã³ ãªã¹ãã§ã[.NET Framework 4.6.2 以é] ã鏿ãã¾ãã
[使] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
Visual Studio ã§æåã® WPF ã¢ã㪠(.NET Framework) ããã¸ã§ã¯ããéãã¾ãã
æé 3 - WebView2 ã使ç¨ããã«æåã®ããã¸ã§ã¯ãããã«ããã¦å®è¡ãã
[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
ããã¸ã§ã¯ããå®è¡ããã空ã®ã¦ã£ã³ãã¦ã表示ããã¾ãã
鏿ãã.NET Frameworkãã¼ã¸ã§ã³ã次ã®ããã«ã¤ã³ã¹ãã¼ã«ããå¿ è¦ãããå ´åãããã¾ãã
ã¢ããªãéããªãå ´åã¯ã[ãããã°] >[ãããã°ãªãã§éå§] ã鏿ãã¾ãã
鏿ãããã¼ã¸ã§ã³ã®.NET Frameworkãã¤ã³ã¹ãã¼ã«ãã¦ããªãå ´åã¯ã次ã®ãã¤ã¢ãã°ã表示ããããã¨ãããã¾ãã"ãã®ã¢ããªã±ã¼ã·ã§ã³ãèµ·åã§ãã¾ããã§ããã ã¢ããªã±ã¼ã·ã§ã³ã«ã¯ã次ã®ããããã®ãã¼ã¸ã§ã³ã® .NET Framework ãå¿ è¦ã§ããNETFramework,Version=v4.8.1 - ãã®.NET Frameworkãã¼ã¸ã§ã³ãä»ããã¤ã³ã¹ãã¼ã«ãã¾ãã?
ãã®ãããªãã¤ã¢ãã°ã表示ãããå ´åã¯ã[.NET Frameworkã®ãã¦ã³ãã¼ã] ã«ç§»åããå¿ è¦ãªãã¼ã¸ã§ã³ã® Developer Pack (ã©ã³ã¿ã¤ã ã§ã¯ãªã) ããã¦ã³ãã¼ããã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã ãã¨ãã°ã
ndp481-devpack-enu.exeããã¦ã³ãã¼ããã¦C:\Users\username\Downloadsãããã¡ã¤ã«ãããã«ã¯ãªãã¯ãã¦ã¤ã³ã¹ãã¼ã«ãã¾ããã¡ãã»ã¼ã¸ã表示ãããããã³ã³ãã¥ã¼ã¿ã¼ãåèµ·åãã¾ãã
C:\Users\username\Downloadsã®ndp481-devpack-enu.exeãªã©ããã¦ã³ãã¼ããããã¡ã¤ã«ã«ç§»åãããã¦ã³ãã¼ããããã¡ã¤ã«ãããä¸åº¦ããã«ã¯ãªãã¯ãã¦ã.NET Framework Developer Pack ãã¤ã³ã¹ãã¼ã«ãã¾ãã [æå] ãã¤ã¢ãã°ã表示ããã¾ãã
ã¡ãã»ã¼ã¸ã表示ãããããã³ã³ãã¥ã¼ã¿ã¼ãããä¸åº¦åèµ·åãã¾ãã
Visual Studio ãéãã使ããã½ãªã¥ã¼ã·ã§ã³ãéãã¾ãã
F5 ãã¼ãæ¼ãã¦ãWebView2 SDK ãå«ã¾ãªãåæã¢ã㪠(ä¸å³) ãå®è¡ãã¾ãã
æåã®ã¢ããªãéãã¾ãã
æé 4 - WebView2 SDK ãã¤ã³ã¹ãã¼ã«ãã
Visual Studio ã§ NuGet ããã±ã¼ã¸ ããã¼ã¸ã£ã¼ã使ç¨ãã¦ã次ã®ããã« WebView2 SDK ãããã¸ã§ã¯ãã«è¿½å ãã¾ãã
ã½ãªã¥ã¼ã·ã§ã³ ã¨ã¯ã¹ããã¼ã©ã¼ã§ã(.NET (Core) ã¾ãã¯ããã¸ã§ã¯ã ãã³ãã¬ã¼ã.NET Frameworkåºã¥ãã¦) ããã¸ã§ã¯ãåãå³ã¯ãªãã¯ãã[NuGet ããã±ã¼ã¸ã®ç®¡ç] ã鏿ãã¾ãã
å·¦ä¸ã® [ åç § ] ã¿ããã¯ãªãã¯ãã¾ããæ¤ç´¢ãã¼ã«ã
Microsoft.Web.WebView2ãã¨å ¥åãã Microsoft.Web.WebView2 ããã±ã¼ã¸ãã¯ãªãã¯ãã¾ãã[NuGet ããã±ã¼ã¸ ããã¼ã¸ã£ã¼] ãã¤ã¢ãã°ã«ã¯ã Microsoft.Web.WebView2 ããã±ã¼ã¸ãå«ãæ¤ç´¢çµæã表示ããã¾ãã ãã¤ã¢ãã°ã«ã¯ãã¼ã¸ã§ã³çªå·ã¨ [ã¤ã³ã¹ãã¼ã« ] ãã¿ã³ãããã¾ãã
æ¢å®ã®ãã¼ã¸ã§ã³ããã®ã¾ã¾ä½¿ç¨ãã[ ã¤ã³ã¹ãã¼ã« ] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
[ 夿´ã®ãã¬ãã¥ã¼ ] ãã¤ã¢ãã°ã§ã[ OK ] ãã¿ã³ãã¯ãªãã¯ãã¾ãã
[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
ããã¸ã§ã¯ããå®è¡ããã空ã®ã¦ã£ã³ãã¦ã表示ããã¾ãã ããã«ãããWebView2 ãã¤ã³ã¹ãã¼ã«ãããåä½ãã¦ãããã¨ã確èªãã¾ãããWebView2 ã«ã¯è¡¨ç¤ºããã³ã³ãã³ããã¾ã ããã¾ããã
ã¢ããªãéãã¾ãã
æé 5 - åä¸ã® WebView2 ã³ã³ããã¼ã«ã使ãã
WebView2 ã³ã³ããã¼ã«ãã¢ããªã«è¿½å ãã¾ãã
MainWindow.xamlãã¡ã¤ã«ã§ãWebView2 XAML åå空éã追å ããã«ã¯ã<Window/>ã¿ã°å ã«æ¬¡ã®è¡ãæ¿å ¥ãã¾ããxmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"MainWindow.xamlã®ã³ã¼ããæ¬¡ã®ã³ã¼ãã®ããã«ãªãã¾ãã<Window x:Class="WPF_Getting_Started.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:{YOUR PROJECT NAME}" xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800" > <Grid> </Grid> </Window>WebView2 ã³ã³ããã¼ã«ã追å ããã«ã¯ã
<Grid>ã¿ã°ã次ã®ã³ã¼ãã«ç½®ãæãã¾ããSourceããããã£ã¯ãWebView2 ã³ã³ããã¼ã«ã«è¡¨ç¤ºãããåæ URI ãè¨å®ãã¾ãã<DockPanel> <wv2:WebView2 Name="webView" Source="https://www.microsoft.com" /> </DockPanel>[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
WebView2 ã³ã³ããã¼ã«ã«æ¬¡ã® https://www.microsoft.comã表示ããã¦ãããã¨ã確èªãã¾ãã
æé 6 - ããã²ã¼ã·ã§ã³
ã¦ã¼ã¶ã¼ãã¢ããªã«ã¢ãã¬ã¹ ãã¼ã追å ãã¦ãWebView2 ã³ã³ããã¼ã«ã«è¡¨ç¤ºããã URL ã夿´ã§ããããã«ãã¾ãã
MainWindow.xamlãã¡ã¤ã«ã«ãWebView2 ã³ã³ããã¼ã«ãå«ã<DockPanel>å ã«æ¬¡ã®ã³ã¼ããã³ãã¼ãã¦è²¼ãä»ãã¦ã¢ãã¬ã¹ ãã¼ã追å ãã¾ãã æ¢åã®ã³ã¼ããæ°ããã¹ããããã®ä¸ã«ç½®ãã¾ãã<DockPanel DockPanel.Dock="Top"> <Button x:Name="ButtonGo" DockPanel.Dock="Right" Click="ButtonGo_Click" Content="Go" /> <TextBox Name="addressBar"/> </DockPanel>MainWindow.xamlãã¡ã¤ã«ã®<DockPanel>ã»ã¯ã·ã§ã³ã次ã®ã³ã¼ãã¨ä¸è´ãã¦ãããã¨ã確èªãã¾ãã<DockPanel> <DockPanel DockPanel.Dock="Top"> <Button x:Name="ButtonGo" DockPanel.Dock="Right" Click="ButtonGo_Click" Content="Go"/> <TextBox Name = "addressBar"/> </DockPanel> <wv2:WebView2 Name = "webView" Source = "https://www.microsoft.com" /> </DockPanel>MainWindow.xaml.csã§ãCoreWebView2åå空éã追å ããã«ã¯ããã¡ã¤ã«ã®å é ã«æ¬¡ã®ã³ã¼ããæ¿å ¥ãã¾ããusing Microsoft.Web.WebView2.Core;MainWindow.xaml.csãã¡ã¤ã«ã§ã次ã®ã³ã¼ããã³ãã¼ãã¦ãButtonGo_Clickã¡ã½ããã使ãã¾ãã ãã®ã³ã¼ãã¯ãWebView2 ã³ã³ããã¼ã«ãã¢ãã¬ã¹ ãã¼ã«å ¥åããã URL ã«ç§»åãã¾ããprivate void ButtonGo_Click(object sender, RoutedEventArgs e) { if (webView != null && webView.CoreWebView2 != null) { webView.CoreWebView2.Navigate(addressBar.Text); } }次ã®ã³ã¼ãã«ç¤ºãããã«ã
Public MainWIndow宣è¨ã®ç´å¾ã«ã³ã¼ããè²¼ãä»ãã¾ããnamespace WpfApp1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } void ButtonGo_Click(object sender, RoutedEventArgs e) { if (webView != null && webView.CoreWebView2 != null) { webView.CoreWebView2.Navigate(addressBar.Text); } } } }[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
ã¢ãã¬ã¹ ãã¼ã«æ°ãã URL ãå ¥åãã[ ç§»å] ã鏿ãã¾ãã ãã¨ãã°ãã
https://www.bing.comãã¨å ¥åãã¾ããå ¥åãã URL ã WebView2 ã³ã³ããã¼ã«ã§éãã¦ãããã¨ã確èªãã¾ãã
ã¢ãã¬ã¹ ãã¼ã«å®å ¨ãª URL ãå ¥åãã¦ãã ããã URL ã
http://ã¾ãã¯https://ã§å§ã¾ããªãå ´åãã¢ããªã¯ArgumentExceptionãçæãã¾ãããµã³ãã« ã¢ããªã¯ãã¢ãã¬ã¹ ãã¼ã« URL
https://www.bing.comãå«ãBing Web ãµã¤ãã表示ãã¾ãã
æé 7 - ããã²ã¼ã·ã§ã³ ã¤ãã³ã
Web ãã¼ã¸ã®ããã²ã¼ã·ã§ã³ä¸ã«ãWebView2 ã³ã³ããã¼ã«ã«ãã£ã¦ã¤ãã³ããçºçãã¾ãã WebView2 ã³ã³ããã¼ã«ããã¹ãããã¢ããªã¯ã次ã®ã¤ãã³ãããªãã¹ã³ãã¾ãã
NavigationStartingSourceChangedContentLoadingHistoryChangedNavigationCompleted
ä¸ã®å³ã¯ãã¤ãã³ã ã·ã¼ã±ã³ã¹ã示ãã¦ãã¾ãã ããã²ã¼ã·ã§ã³ ã¤ãã³ãã¯ãæ°ããããã¥ã¡ã³ãããå§ã¾ãã¾ãã
æåãã¹
æåãããã¹ã«ã¯ãã¤ãã³ãã®å®å ¨ãªã·ã¼ã±ã³ã¹ãå«ã¾ãã¾ãã
- ããã²ã¼ã·ã§ã³ã®éå§ã
- ã½ã¼ã¹ã夿´ãããåãããã¥ã¡ã³ãããã®å ¥åãå¯è½ã«ãªãã¾ããã
- ã³ã³ãã³ãã®èªã¿è¾¼ã¿ã
- å±¥æ´ã®å¤æ´ã
- ããã²ã¼ã·ã§ã³ãå®äºãã¾ããã
詳細ã«ã¤ãã¦ã¯ãã WebView2 ã¢ããªã®ããã²ã¼ã·ã§ã³ ã¤ãã³ãããåç §ãã¦ãã ããã
ã¨ã©ã¼ ãã¹
ã¨ã©ã¼ãçºçããå ´åãã¨ã©ã¼ ãã¹ã¯ããã²ã¼ã·ã§ã³ã®éå§ããããã²ã¼ã·ã§ã³å®äºã¾ã§ç´æ¥é²ã¿ãä»å¨ããã¤ãã³ãã¯ã¹ãããããã¾ãã
ã¨ã©ã¼ãçºçããã¨ã次ã®ã¤ãã³ããçºçããã¨ã©ã¼ Web ãã¼ã¸ã¸ã®ããã²ã¼ã·ã§ã³ã«ä¾åããå ´åãããã¾ãã
SourceChangedContentLoadingHistoryChanged
ãªãã¤ã¬ã¯ã
HTTP ãªãã¤ã¬ã¯ããçºçããå ´åã1 è¡ã«è¤æ°ã® NavigationStarting ã¤ãã³ããããã¾ãã
ããã²ã¼ã·ã§ã³ ã¤ãã³ãã®ãã¢ã®ä¾
ã¤ãã³ãã®ä½¿ç¨æ¹æ³ã示ãã«ã¯ã次ã®ããã«ãHTTPS 以å¤ã®è¦æ±ãåãæ¶ã NavigationStarting ã®ãã³ãã©ã¼ãç»é²ãã¾ãã
MainWindow.xaml.csãã¡ã¤ã«ã§ã次ã®ã³ã¼ãã®å é é¨åã¨ä¸è´ããããã«ã³ã³ã¹ãã©ã¯ã¿ã¼ã夿´ãã¾ãã ã³ã³ã¹ãã©ã¯ã¿ã¼ã®ä¸ã«ãEnsureHttps颿°ã追å ãã¾ããpublic MainWindow() { InitializeComponent(); webView.NavigationStarting += EnsureHttps; } void EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args) { String uri = args.Uri; if (!uri.StartsWith("https://")) { args.Cancel = true; } }ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ã¯ã
EnsureHttps㯠WebView2 ã³ã³ããã¼ã«ã®NavigationStartingã¤ãã³ãã®ã¤ãã³ã ãã³ãã©ã¼ã¨ãã¦ç»é²ããã¾ãã[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
HTTP ãµã¤ããéããã¨ãã¾ãã WebView2 ã³ã³ããã¼ã«ã夿´ããã¦ããªããã¨ã確èªãã¾ãã
HTTPS ãµã¤ããéããã¨ãã¾ãã WebView2 ã³ã³ããã¼ã«ã使ç¨ããã¨ãHTTPS ãµã¤ããéãã¾ãã
æé 8 - ã¹ã¯ãªãã
ãã¹ã ã¢ããªã使ç¨ããã¨ãå®è¡æã« JavaScript ã³ã¼ãã WebView2 ã³ã³ããã¼ã«ã«æ¿å ¥ã§ãã¾ãã WebView2 ãã¿ã¹ã¯ãã¦ãä»»æã® JavaScript ãå®è¡ããããåæåã¹ã¯ãªããã追å ãããã§ãã¾ãã æ¿å ¥ããã JavaScript ã¯ãJavaScript ãåé¤ãããã¾ã§ããã¹ã¦ã®æ°ããæä¸ä½ããã¥ã¡ã³ãã¨åãã¬ã¼ã ã«é©ç¨ããã¾ãã
æ¿å ¥ããã JavaScript ã¯ãç¹å®ã®ã¿ã¤ãã³ã°ã§å®è¡ããã¾ãã
- ã°ãã¼ãã« ãªãã¸ã§ã¯ãã®ä½æå¾ã«å®è¡ãã¾ãã
- HTML ããã¥ã¡ã³ãã«å«ã¾ããä»ã®ã¹ã¯ãªãããå®è¡ãããåã«å®è¡ãã¾ãã
ãã¨ãã°ã次ã®ããã«ãã¦ã¼ã¶ã¼ã HTTPS 以å¤ã®ãµã¤ãã«ç§»åããã¨ãã«ã¢ã©ã¼ããéä¿¡ããã¹ã¯ãªããã追å ãã¾ãã
EnsureHttps颿°ã夿´ãã¦ãExecuteScriptAsync ã¡ã½ããã使ç¨ãã Web ã³ã³ãã³ãã«ã¹ã¯ãªãããæ¿å ¥ãã¾ããvoid EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args) { String uri = args.Uri; if (!uri.StartsWith("https://")) { webView.CoreWebView2.ExecuteScriptAsync($"alert('{uri} is not safe, try an https link')"); args.Cancel = true; } }[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
HTTPS ã使ç¨ããªã Web ãµã¤ãã«ç§»åããã¨ãã«ãã¢ããªã«ã¢ã©ã¼ãã表示ããããã¨ã確èªãã¾ãã
æé 9 - ãã¹ã㨠Web ã³ã³ãã³ãã®éã®éä¿¡
ãã¹ã㨠Web ã³ã³ãã³ãã¯ã postMessageã使ç¨ãã¦æ¬¡ã®æ¹æ³ã§éä¿¡ã§ãã¾ãã
WebView2 ã³ã³ããã¼ã«ã® Web ã³ã³ãã³ãã¯ã
window.chrome.webview.postMessageã使ç¨ãã¦ãã¹ãã«ã¡ãã»ã¼ã¸ãæç¨¿ã§ãã¾ãã ãã¹ãã¯ããã¹ãä¸ã®ç»é²æ¸ã¿WebMessageReceivedã使ç¨ãã¦ã¡ãã»ã¼ã¸ãå¦çãã¾ããCoreWebView2.PostWebMessageAsStringã¾ãã¯CoreWebView2.PostWebMessageAsJSONã使ç¨ãã¦ãWebView2 ã³ã³ããã¼ã«å ã® Web ã³ã³ãã³ãã«ã¡ãã»ã¼ã¸ãæç¨¿ãã¾ãã ã¡ãã»ã¼ã¸ã¯ãwindow.chrome.webview.addEventListenerã«è¿½å ããããã³ãã©ã¼ã«ãã£ã¦ãã£ããããã¾ãã
éä¿¡ã¡ã«ããºã ã¯ããã¤ãã£ãæ©è½ã使ç¨ãã¦ãWeb ã³ã³ãã³ããããã¹ãã«ã¡ãã»ã¼ã¸ã渡ãã¾ãã
ããã¸ã§ã¯ãã§ã¯ãWebView2 ã³ã³ããã¼ã«ã URL ã«ç§»åããã¨ãã¢ãã¬ã¹ ãã¼ã« URL ã表示ãããWebView2 ã³ã³ããã¼ã«ã«è¡¨ç¤ºããã URL ã®ã¦ã¼ã¶ã¼ã«ã¢ã©ã¼ãã表示ããã¾ãã
MainWindow.xaml.csã§ãã³ã³ã¹ãã©ã¯ã¿ã¼ãæ´æ°ããæ¬¡ã®ã³ã¼ãã«ä¸è´ããInitializeAsync颿°ã使ãã¾ããCoreWebView2ã®åæåã¯éåæã§ãããããInitializeAsync颿°ã¯ EnsureCoreWebView2Async ãå¾ æ©ãã¾ããpublic MainWindow() { InitializeComponent(); webView.NavigationStarting += EnsureHttps; InitializeAsync(); } async void InitializeAsync() { await webView.EnsureCoreWebView2Async(null); }CoreWebView2 ãåæåããããã
WebMessageReceivedã«å¿çããã¤ãã³ã ãã³ãã©ã¼ãç»é²ãã¾ããMainWindow.xaml.csã§ã次ã®ã³ã¼ãã使ç¨ãã¦InitializeAsyncãæ´æ°ããUpdateAddressBarã追å ãã¾ããasync void InitializeAsync() { await webView.EnsureCoreWebView2Async(null); webView.CoreWebView2.WebMessageReceived += UpdateAddressBar; } void UpdateAddressBar(object sender, CoreWebView2WebMessageReceivedEventArgs args) { String uri = args.TryGetWebMessageAsString(); addressBar.Text = uri; webView.CoreWebView2.PostWebMessageAsString(uri); }WebView2 ã³ã³ããã¼ã«ã Web ã¡ãã»ã¼ã¸ãéä¿¡ãã¦å¿çããã«ã¯ã
CoreWebView2ãåæåãããå¾ããã¹ãã¯æ¬¡ã®å¦çãè¡ãã¾ãã- ãã¹ãããã¡ãã»ã¼ã¸ãåºåãããã³ãã©ã¼ãç»é²ããã¹ã¯ãªããã Web ã³ã³ãã³ãã«æ¿å ¥ãã¾ãã
- URL ããã¹ãã«æç¨¿ããã¹ã¯ãªããã Web ã³ã³ãã³ãã«æ¿å ¥ãã¾ãã
MainWindow.xaml.csã§ã次ã®ã³ã¼ãã«ä¸è´ããããã«InitializeAsyncãæ´æ°ãã¾ããasync void InitializeAsync() { await webView.EnsureCoreWebView2Async(null); webView.CoreWebView2.WebMessageReceived += UpdateAddressBar; await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("window.chrome.webview.postMessage(window.document.URL);"); await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("window.chrome.webview.addEventListener(\'message\', event => alert(event.data));"); }[ãã¡ã¤ã«] >[ãã¹ã¦ä¿å] ã鏿ãã¦ããã¸ã§ã¯ããä¿åãã¾ãã
F5 ãã¼ãæ¼ãã¦ãããã¸ã§ã¯ãããã«ããã¦å®è¡ãã¾ãã
æ°ãã URI ãéãã¨ãWebView2 ã³ã³ããã¼ã«ã«ã¢ãã¬ã¹ ãã¼ã« URI ã表示ããã¾ãã
ãµã³ãã« ã¢ããªã§ã¯ãã¢ãã¬ã¹ ãã¼ã¨ Microsoft Web ãµã¤ãã« URI ã表示ãããæ¬¡ã® https://www.microsoft.comã
ããã§ãåãã¦ã® WebView2 ã¢ããªã使ããã¾ããã
é¢é£é ç®
developer.microsoft.com:
- Microsoft Edge WebView2 - developer.microsoft.com ã§ã® WebView2 æ©è½ã®åææ¦è¦ã
ãã¼ã«ã« ãã¼ã¸:
- WPF ãµã³ãã« ã¢ããª
- ã¦ã¼ã¶ã¼ ãã¼ã¿ ãã©ã«ãã¼ã管çãã
-
WebView2 ãµã³ãã« ã¢ã㪠-
WebView2Samplesãªãã¸ããªã®ã¬ã¤ãã - WebView2 ã¢ããªã®éçºã®ãã¹ã ãã©ã¯ãã£ã¹
GitHub: