Ejemplo n.º 1
0
        async void InitializeWebViewAsync(WebView2 webView, SettingLoader setting)
        {
            if (setting != null)
            {
                string userDataPath = setting.Settings.UserDataPath;
                if (!System.IO.Directory.Exists(userDataPath))
                {
                    System.IO.Directory.CreateDirectory(userDataPath);
                }

                string argment = null;
                if (!string.IsNullOrEmpty(setting.Settings.CachePath))
                {
                    argment = $"--disk-cache-dir=\"{setting.Settings.CachePath}\"";
                }

                CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions(argment);
                var environment = await CoreWebView2Environment.CreateAsync(userDataFolder : userDataPath, options : options);

                await webView.EnsureCoreWebView2Async(environment);
            }
            webView.Source = new Uri(setting?.Settings.HomePage ?? "https://www.google.com");

            WebViewController.sliderPan.ValueChanged    += sliderPan_ValueChanged;
            WebViewController.sliderVolume.ValueChanged += sliderVolume_ValueChanged;
            webView.CoreWebView2.SourceChanged          += CoreWebView2_SourceChanged;
            webView.CoreWebView2.NewWindowRequested     += CoreWebView2_NewWindowRequested;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds a WebView2 Control to Control Collection.
        /// </summary>
        /// <param name="svgData">Svg to display on Browser Control.</param>
        private void AddWebViewControl(string svgData)
        {
            _browser      = new WebView2();
            _browser.Dock = DockStyle.Fill;

            ConfiguredTaskAwaitable <CoreWebView2Environment> .ConfiguredTaskAwaiter
                webView2EnvironmentAwaiter = CoreWebView2Environment
                                             .CreateAsync(userDataFolder: System.Environment.GetEnvironmentVariable("USERPROFILE") +
                                                          "\\AppData\\LocalLow\\Microsoft\\PowerToys\\SvgPreview-Temp")
                                             .ConfigureAwait(true).GetAwaiter();
            webView2EnvironmentAwaiter.OnCompleted(() =>
            {
                InvokeOnControlThread(async() =>
                {
                    try
                    {
                        _webView2Environment = webView2EnvironmentAwaiter.GetResult();
                        await _browser.EnsureCoreWebView2Async(_webView2Environment).ConfigureAwait(true);
                        await _browser.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("window.addEventListener('contextmenu', window => {window.preventDefault();});");
                        _browser.CoreWebView2.SetVirtualHostNameToFolderMapping(VirtualHostName, AssemblyDirectory, CoreWebView2HostResourceAccessKind.Allow);
                        _browser.CoreWebView2.Settings.AreDefaultScriptDialogsEnabled = false;
                        _browser.NavigateToString(svgData);
                        Controls.Add(_browser);
                    }
                    catch (NullReferenceException)
                    {
                    }
                });
            });
        }
Ejemplo n.º 3
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            var userDataDir = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "User Data";
            var ua          = "GoogleTV/CloudMoe-Version (DISKTOP; Windows NT " + Environment.OSVersion.Version.ToString() + "; Wired) Cobalt/" + runtimeVersion + " (unlike Gecko) html5_enable_androidtv_cobalt_widevine html5_enable_cobalt_experimental_vp9_decoder";
            // var ua = "GoogleTV/10.0 (Windows NT 10.0; Cobalt; Wired) html5_enable_androidtv_cobalt_widevine html5_enable_cobalt_experimental_vp9_decoder";
            //var ua = "Mozilla/5.0 (WINDOWS 10.0), GAME_XboxSeriesX/10.0.18363.7196 (Microsoft, Xbox Series X, Wired)";
            //var ua = "Mozilla/5.0 (SMART-TV; Linux; Tizen 5.5) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/69.0.3497.106 TV Safari/537.36";
            //var ua = "Mozilla/5.0 (PlayStation 4 7.51) AppleWebKit/605.1.15 (KHTML, like Gecko)";
            //var ua = "Mozilla/5.0 (Nintendo Switch; WebApplet) AppleWebKit/606.4 (KHTML, like Gecko) NF/6.0.1.16.10 NintendoBrowser/5.1.0.20923";
            //var options = new CoreWebView2EnvironmentOptions("--disable-web-security --enable-features=msPlayReadyWin10 --user-agent=\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox Series X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/20.02\"");
            //var options = new CoreWebView2EnvironmentOptions("--enable-features=msMediaFoundationClearPlaybackWin10,msPlayReadyWin10 --user-agent=\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox Series X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/20.02\"");
            var options = new CoreWebView2EnvironmentOptions(startupArgs + "--allow-failed-policy-fetch-for-test --allow-running-insecure-content --disable-web-security --user-agent=\"" + ua + "\""); // Mozilla/5.0 (WINDOWS 10.0) Cobalt/19.lts.4.196747-gold (unlike Gecko) v8/6.5.254.43 gles Starboard/10, GAME_XboxOne/10.0.18363.7196 (Microsoft, XboxOne X, Wired)

            coreWebView2Environment = CoreWebView2Environment.CreateAsync(runtimePath, userDataDir, options).Result;

            splashScreenWebView = new WebView2();
            screenWebView       = new WebView2();

            screenWebView.Enabled = false;

            screenWebViewPanel.Visible       = false;
            splashScreenWebViewPanel.Visible = false;

            screenWebViewPanel.Controls.Add(screenWebView);
            splashScreenWebViewPanel.Controls.Add(splashScreenWebView);

            InitializeSplashScreenAsync();
        }
Ejemplo n.º 4
0
        async void InitializeWebView()
        {
            string version         = GetWebView2Version();
            var    isAltKeyPressed = (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt));

            if (version == "" || isAltKeyPressed)
            {
                PromptToInstallWebview2();
                return;
            }

            this.Title = $"Focalboard (port {port} WebView {version})";

            // must create a data folder if running out of a secured folder that can't write like Program Files
            var env = await CoreWebView2Environment.CreateAsync(
                userDataFolder : Path.Combine(Path.GetTempPath(), "Focalboard")
                );

            await webView.EnsureCoreWebView2Async(env);

            webView.ContentLoading += WebView_ContentLoading;

            var url = String.Format("http://localhost:{0}", port);

            webView.Source = new Uri(url);
        }
Ejemplo n.º 5
0
        private void AMain_Load(object sender, EventArgs e)
        {
            var envir = CoreWebView2Environment.CreateAsync(null, Settings.ResourcePath).Result;

            Main_browser.EnsureCoreWebView2Async(envir);

            if (Settings.P_BrowserAddress != "")
            {
                Main_browser.NavigationCompleted += Main_browser_NavigationCompleted;
                Main_browser.Source = new Uri(Settings.P_BrowserAddress);
            }

            RepairOldFiles();

            Launch_pb.Enabled        = false;
            ProgressCurrent_pb.Width = 5;
            TotalProg_pb.Width       = 5;
            Version_label.Text       = string.Format("Build: {0}.{1}.{2}", Globals.ProductCodename, Settings.UseTestConfig ? "Debug" : "Release", Application.ProductVersion);

            if (Settings.P_ServerName != String.Empty)
            {
                Name_label.Visible = true;
                Name_label.Text    = Settings.P_ServerName;
            }

            _workThread = new Thread(Start)
            {
                IsBackground = true
            };
            _workThread.Start();
        }
Ejemplo n.º 6
0
        private async void NewTab(string startUrl)
        {
            TabPage page = new TabPage("新标签页")
            {
                Padding = new Padding(0, 0, 0, 0)
            };
            WebView2 browser = new WebView2
            {
                Source = new Uri(startUrl),
                Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom,
                Dock   = DockStyle.Fill
            };
            CoreWebView2Environment ev = await CoreWebView2Environment.CreateAsync(null, AppContext.BaseDirectory);

            await browser.EnsureCoreWebView2Async(ev);

            CoreWebView2 coreWebView2 = browser.CoreWebView2;

            //Event Start

            coreWebView2.SourceChanged += (s, e) =>
            {
                BeginInvoke(new Action(() =>
                {
                    addressTextBox.Text = coreWebView2.Source;
                }));
            };
            coreWebView2.DocumentTitleChanged += (s, e) =>
            {
                BeginInvoke(new Action(() =>
                {
                    var title = coreWebView2.DocumentTitle;
                    if (title != null)
                    {
                        if (tabControl.SelectedTab == page)
                        {
                            Text = coreWebView2.DocumentTitle + " - " + _mainTitle;
                        }
                        page.ToolTipText = title;
                        if (title.Length > size)
                        {
                            title = title.Substring(0, size) + "...";
                        }
                        page.Text = title;
                    }
                }));
            };
            refreshToolStripButton.Image      = CloseImage;
            refreshToolStripButton.Click     += stopRefreshToolStripButton_Click;
            coreWebView2.NavigationCompleted += (s, e) =>
            {
                refreshToolStripButton.Image  = RefreshImage;
                refreshToolStripButton.Click += refreshToolStripButton_Click;
            };
            coreWebView2.NewWindowRequested += OnNewWindowRequested;

            page.Controls.Add(browser);
            tabControl.TabPages.Add(page);
            tabControl.SelectedTab = page;
        }
Ejemplo n.º 7
0
        private async void InitializeBrowser()
        {
            // Must create the environment and set the application data to somewhere writable. I.e. user's
            // local AppData directory. And you must do this before attempting to navigate the browser to an
            // address.

            try
            {
                var env = await CoreWebView2Environment.CreateAsync(Global.EdgeFolder, Global.AppDataLocation);

                await browser.EnsureCoreWebView2Async(env);

                browser.Source = new Uri("https://music.youtube.com/", UriKind.Absolute);
            }
            catch (Exception e)
            {
                MainForm.SetConnectToYouTubeButtonEnabled(false);
                MainForm.ShowMessageBox(
                    "WebView2 Error",
                    $"{Environment.NewLine}It looks like Canary Edge Core never finished installing. {Environment.NewLine}{Environment.NewLine}" +
                    $"Please delete the folder: {Global.EdgeFolder} and then restart this application. If the error persists, then this application " +
                    $"has been built wrong. Please see the 'WARNING' in file: 'Dialogues/ConnectToYTMusics." +
                    $"{Environment.NewLine}{Environment.NewLine}The application will reinstall automatically once restarted." +
                    $"{Environment.NewLine}{Environment.NewLine}Exception: {e.Message}" +
                    $"{Environment.NewLine}{Environment.NewLine}YT Music Uploader will now exit.",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error,
                    320);

                Process.GetCurrentProcess().Kill();
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Programatically initialize the WebView2Wrapper component.
        /// </summary>
        public async void InitializeWebView(DockPanel docker)
        {
            _webView = new Microsoft.Web.WebView2.Wpf.WebView2();

            // clear everything in the WPF dock panel container
            docker.Children.Clear();
            docker.Children.Add(_webView);

            // initialize the webview 2 instance
            try
            {
                _webView.CoreWebView2InitializationCompleted += OnWebViewInitializationCompleted;
                CoreWebView2Environment env = await CoreWebView2Environment.CreateAsync(null, ExecutingLocation);

                await _webView.EnsureCoreWebView2Async(env);

                _webView.WebMessageReceived  += OnWebViewInteraction;
                _webView.NavigationCompleted += OnWebViewNavigationCompleted;
                //InitializeDevToolsProtocolHelper();
                //SubscribeToDocumentUpdated();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 9
0
        public WebView2Browser(string url = "about:blank")
        {
            browser = new WebView2();
            browser.NavigationCompleted += Browser_DocumentCompleted;

            var createTask = CoreWebView2Environment.CreateAsync(null, PreferenceManager.WebView2UserDataPath, null);

            createTask.Wait();
            environment = createTask.Result;
            browser.CoreWebView2InitializationCompleted += (sender, e) => {
                browser.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
                browser.CoreWebView2.WebResourceRequested         += CoreWebView2_WebResourceRequested;
                browser.CoreWebView2.Settings.IsZoomControlEnabled = false;
#if !DEBUG
                browser.CoreWebView2.Settings.AreDevToolsEnabled = false;
#endif
                browser.CoreWebView2.Settings.IsStatusBarEnabled            = false;
                browser.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;

                // Due to a bug in WebView2 (https://github.com/MicrosoftEdge/WebView2Feedback/issues/721)
                // Setting e.Handled in KeyDown won't work as how Microsoft advertised it.
                // So reflection has to be used, in order to directly subscribe to the AcceleratorKeyPressed event.
                // Why can't Microsoft do their things right?
                CoreWebView2Controller controller = (CoreWebView2Controller)browser.GetType().GetField("_coreWebView2Controller",
                                                                                                       System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(browser);
                controller.AcceleratorKeyPressed += Controller_AcceleratorKeyPressed;
            };
            browser.KeyDown            += Browser_KeyDown;
            browser.WebMessageReceived += Browser_WebMessageReceived;
            browser.EnsureCoreWebView2Async(environment);
            Navigate(url);
        }
Ejemplo n.º 10
0
        private async void SetupBrowser()
        {
            CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions("--proxy-server=\"localhost:8000\"", "ja");

            CoreWebView2Environment env = await CoreWebView2Environment.CreateAsync(null, null, options);

            await LoginBrowser.EnsureCoreWebView2Async(env);
        }
Ejemplo n.º 11
0
        private async void InitializeAsync()
        {
            string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string cacheFolder  = Path.Combine(localAppData, "WindowsFormsWebView2");
            var    environment  = await CoreWebView2Environment.CreateAsync(null, cacheFolder);

            await _browser.EnsureCoreWebView2Async(environment);
        }
Ejemplo n.º 12
0
        private async void LoadMain()
        {
            var env = await CoreWebView2Environment.CreateAsync(null, "C:\\temp");

            await webView.EnsureCoreWebView2Async(env);

            webView.Source = new Uri("http://example.com");
        }
Ejemplo n.º 13
0
        private async void InitAsync()
        {
            var env = await CoreWebView2Environment.CreateAsync(null, @"C:\temp\edgechromium");

            await webView.EnsureCoreWebView2Async(env);

            //webView.Source = new Uri("https://smartemailer365.azurewebsites.net/");
            webView.Source = new Uri("https://www.microsoft.com/");
        }
Ejemplo n.º 14
0
        private async Task InitializeWebView2()
        {
            var options = new CoreWebView2EnvironmentOptions();

            options.AdditionalBrowserArguments = "--remote-debugging-port=8077";
            var env = await CoreWebView2Environment.CreateAsync(null, null, options);

            await this.webView2Control.EnsureCoreWebView2Async(env);
        }
Ejemplo n.º 15
0
        private async Task InitializeWebView2()
        {
            var environment = await CoreWebView2Environment.CreateAsync();

            await _webview.EnsureCoreWebView2Async(environment);

            ApplyDefaultWebViewSettings();

            _webview.CoreWebView2.AddWebResourceRequestedFilter($"{AppOrigin}*", CoreWebView2WebResourceContext.All);
            _webview.CoreWebView2.WebResourceRequested += (sender, eventArgs) =>
            {
                // Unlike server-side code, we get told exactly why the browser is making the request,
                // so we can be smarter about fallback. We can ensure that 'fetch' requests never result
                // in fallback, for example.
                var allowFallbackOnHostPage =
                    eventArgs.ResourceContext == CoreWebView2WebResourceContext.Document ||
                    eventArgs.ResourceContext == CoreWebView2WebResourceContext.Other;                     // e.g., dev tools requesting page source

                if (TryGetResponseContent(eventArgs.Request.Uri, allowFallbackOnHostPage, out var statusCode, out var statusMessage, out var content, out var headers))
                {
                    // NOTE: This is stream copying is to work around a hanging bug in WinRT with managed streams
                    var memStream = new MemoryStream();
                    content.CopyTo(memStream);
                    var ms = new InMemoryRandomAccessStream();
                    ms.WriteAsync(memStream.GetWindowsRuntimeBuffer()).AsTask().Wait();

                    var headerString = GetHeaderString(headers);
                    eventArgs.Response = environment.CreateWebResourceResponse(ms, statusCode, statusMessage, headerString);
                }
            };

            // The code inside blazor.webview.js is meant to be agnostic to specific webview technologies,
            // so the following is an adaptor from blazor.webview.js conventions to WebView2 APIs
            await _webview.CoreWebView2 !.AddScriptToExecuteOnDocumentCreatedAsync(@"
                window.external = {
                    sendMessage: message => {
                        window.chrome.webview.postMessage(message);
                    },
                    receiveMessage: callback => {
                        window.chrome.webview.addEventListener('message', e => callback(e.data));
                    }
                };
            ");

            _webview.CoreWebView2.WebMessageReceived += (sender, eventArgs)
                                                        => MessageReceived(new Uri(eventArgs.Source), eventArgs.TryGetWebMessageAsString());

            _webview.CoreWebView2.DOMContentLoaded += async(_, __) =>
            {
                await _webview.CoreWebView2 !.ExecuteScriptAsync(@"
					Blazor.start();
					"                    );
            };
        }
Ejemplo n.º 16
0
        private async Task InitWebview()
        {
            environment = await CoreWebView2Environment.CreateAsync();

            await webview.EnsureCoreWebView2Async(environment);

            webview.CoreWebView2.DocumentTitleChanged += (s, t) => { TitleChanged?.Invoke(this, webview.CoreWebView2.DocumentTitle); };

            string initScript = Resources.GetInitScript("Edgium");
            await webview.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(initScript);
        }
Ejemplo n.º 17
0
        private async Task HandleElementChangedAsync(ElementChangedEventArgs <WebViewExtended> e)
        {
            if (e.OldElement != null)
            {
                throw new NotSupportedException("On WPF, we need to retain the association between WebView elements and renderers, so switching to a different element isn't supported.");
            }

            if (e.NewElement != null)
            {
                if (Control != null)
                {
                    throw new NotSupportedException("On WPF, we need to retain the association between WebView elements and renderers, so switching to a different element isn't supported.");
                }

                if (e.NewElement.RetainedNativeControl is WebView2 retainedNativeControl)
                {
                    SetNativeControl(retainedNativeControl);
                    SubscribeToControlEvents();
                }
                else
                {
                    var nativeControl = new WebView2()
                    {
                        MinHeight = 200
                    };
                    e.NewElement.RetainedNativeControl = nativeControl;
                    SetNativeControl(nativeControl);

                    var defaultPrivateWebView2InstallFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "WebView2");
                    var privateWebView2InstallFolder        = Directory.Exists(defaultPrivateWebView2InstallFolder) ? defaultPrivateWebView2InstallFolder : null;
                    _coreWebView2Environment = await CoreWebView2Environment.CreateAsync(privateWebView2InstallFolder).ConfigureAwait(true);

                    await nativeControl.EnsureCoreWebView2Async(_coreWebView2Environment).ConfigureAwait(true);

                    await Control.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("window.external = { sendMessage: function(message) { window.chrome.webview.postMessage(message); }, receiveMessage: function(callback) { window.chrome.webview.addEventListener(\'message\', function(e) { callback(e.data); }); } };").ConfigureAwait(true);

                    await Control.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(LoadBlazorJSScript).ConfigureAwait(true);

                    SubscribeToControlEvents();

                    Load();
                }

                SubscribeToElementEvents();

                // There is a weird bug in WebView2 where on 200% DPI it does not redraw the WebView2 until you
                // send a WM_WINDOWPOSCHANGING message to the child window that serves as a host for WebView2.
                // this sends the required message.
                Control.UpdateWindowPos();
            }

            base.OnElementChanged(e);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Initialize webview2
        /// </summary>
        public async static void InitializeWebview2()
        {
            if (!StaticReferences.IsWebView2Enabled)
            {
                return;
            }

            var webViewData = ISettingsManager.GetWebViewDataPath();

            Directory.CreateDirectory(webViewData);
            Helpers.Helpers.objCoreWebView2Environment = await CoreWebView2Environment.CreateAsync(null, webViewData, null);
        }
        private async Task HandleElementChangedAsync(ElementChangedEventArgs <WebViewExtended> e)
        {
            if (e.OldElement != null)
            {
                Element.SendMessageFromJSToDotNetRequested -= OnSendMessageFromJSToDotNetRequested;
            }

            if (e.NewElement != null)
            {
                if (Control == null)
                {
                    try
                    {
#pragma warning disable CA2000 // Dispose objects before losing scope; this object's lifetime is managed elsewhere
                        var nativeControl = new WebView2()
                        {
                            MinHeight = 200
                        };
#pragma warning restore CA2000 // Dispose objects before losing scope
                        SetNativeControl(nativeControl);

                        _coreWebView2Environment = await CoreWebView2Environment.CreateAsync().ConfigureAwait(true);

                        await nativeControl.EnsureCoreWebView2Async(_coreWebView2Environment).ConfigureAwait(true);

                        await Control.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("window.external = { sendMessage: function(message) { window.chrome.webview.postMessage(message); }, receiveMessage: function(callback) { window.chrome.webview.addEventListener(\'message\', function(e) { callback(e.data); }); } };").ConfigureAwait(true);

                        await Control.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(LoadBlazorJSScript).ConfigureAwait(true);
                    }
#pragma warning disable CA1031 // Do not catch general exception types
                    catch (Exception ex)
#pragma warning restore CA1031 // Do not catch general exception types
                    {
                        e.NewElement.ErrorHandler?.HandleException(ex);
                        return;
                    }
                    SubscribeToControlEvents();
                }

                Load();

                SubscribeToElementEvents();

                // There is a weird bug in WebView2 where on 200% DPI it does not redraw the WebView2 until you
                // send a WM_WINDOWPOSCHANGING message to the child window that serves as a host for WebView2.
                // this sends the required message.
                Control.UpdateWindowPos();
            }

            base.OnElementChanged(e);
        }
Ejemplo n.º 20
0
        async private void MainForm_Load(object sender, EventArgs e)
        {
            // Load asset comboboxes
            comboBoxImageLarge.Items.Add("(None)");
            comboBoxImageLarge.SelectedIndex = 0;
            comboBoxImageSmall.Items.Add("(None)");
            comboBoxImageSmall.SelectedIndex = 0;


            // Load applications
            foreach (Program.DiscordApplication app in Program.Applications)
            {
                comboBoxApp.Items.Add(app.Name);
            }

            comboBoxApp.SelectedIndex = -1;


            // Load presets
            foreach (Program.Preset preset in Program.Presets)
            {
                comboBoxPreset.Items.Add(preset.Name);
            }

            comboBoxPreset.SelectedIndex = 0; // triggers ReloadCurrentPreset()


            // Load Web browser (Edge)
            webView.Width    = 400;
            webView.Height   = this.Height;
            webView.Location = new System.Drawing.Point((this.Width - webView.Width) / 2, 0);
            webView.Hide();

            this.Controls.Add(webView);
            CoreWebView2Environment webViewEnv = await CoreWebView2Environment.CreateAsync(null, Program.appDataPath);

            await webView.EnsureCoreWebView2Async(webViewEnv);

            webView.NavigationCompleted += WebView_NavigationCompletedAsync;
            webView.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceived;


            // Debug

            /*DateTime time = DateTime.UtcNow.AddHours((double)numericUpDownHours.Value);
             * long timestamp = new DateTimeOffset(time).ToUnixTimeSeconds();
             *
             * textBoxTimestampEnd.Text = timestamp.ToString();
             * Start = textBoxTimestampStart.Text != "" && Int32.TryParse(textBoxTimestampStart.Text, out TimestampStart) ? new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(TimestampStart) : DateTime.UtcNow
             */
        }
Ejemplo n.º 21
0
        // Form.Loaded
        private async void StartWorkLoaded(object sender, EventArgs e)
        {
            try
            {
                var env = await CoreWebView2Environment.CreateAsync(null,
                                                                    Path.Combine(PathFactory.GetAppDataPath(), Resx.ProgramName));

                await webView.EnsureCoreWebView2Async(env);
                await startup(webView);
            }
            catch (Exception exc)
            {
                Logger.Current.WriteLine(exc.Message, exc);
            }
        }
Ejemplo n.º 22
0
        async void InitializeAsync()
        {
            var browserFolder = Path.Combine(mmApp.Configuration.CommonFolder, "WebView_Browser");
            // must create a data folder if running out of a secured folder that can't write like Program Files
            var env = await CoreWebView2Environment.CreateAsync(
                userDataFolder : browserFolder
                );

            await WebBrowser.EnsureCoreWebView2Async(env);

            if (Model.Configuration.System.ShowDeveloperToolsOnStartup)
            {
                WebBrowser.CoreWebView2.OpenDevToolsWindow();
            }
        }
Ejemplo n.º 23
0
        async void InitializeAsync()
        {
            //string userdataPath = "C:\\Users\\tachen\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 1";
            //string userdataPath = "C:\\Users\\tachen\\AppData\\Local\\Microsoft\\Edge\\User Data\\Profile 4";
            string userdataPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "WebView2WorkDir");

            if (!Directory.Exists(userdataPath))
            {
                Directory.CreateDirectory(userdataPath);
            }
            //CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions("--profile-directory=Profile 4");
            var webView2Environment = await CoreWebView2Environment.CreateAsync(null, userdataPath, null);

            await webViewMain.EnsureCoreWebView2Async(webView2Environment);
        }
Ejemplo n.º 24
0
        private async void WebBrowserView_Loaded(object sender, RoutedEventArgs e)
        {
            if (Environment == null)
            {
                string userDataFolder = Path.Combine(Path.GetTempPath(), AppDomain.CurrentDomain.FriendlyName);
                Environment = await CoreWebView2Environment.CreateAsync(null, userDataFolder, EnvironmentOptions);
            }

            if (!String.IsNullOrEmpty(Uri))
            {
                await WebView.EnsureCoreWebView2Async(Environment);

                WebView.CoreWebView2.Navigate(Uri);
            }
        }
Ejemplo n.º 25
0
        private async Task DoStart()
        {
            _coreWebView2Environment = await CoreWebView2Environment.CreateAsync().ConfigureAwait(true);

            await _webView2.EnsureCoreWebView2Async(_coreWebView2Environment).ConfigureAwait(true);

            await _webView2.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("window.external = { sendMessage: function(message) { window.chrome.webview.postMessage(message); }, receiveMessage: function(callback) { window.chrome.webview.addEventListener(\'message\', function(e) { callback(e.data); }); } };").ConfigureAwait(true);

            await _webView2.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(LoadBlazorJSScript).ConfigureAwait(true);

            SubscribeToControlEvents();

            Load();

            SubscribeToElementEvents();
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Webview2 初始化
        /// </summary>
        /// <param name="webview">Microsoft.Web.WebView2.WinForms.WebView2</param>
        /// <param name="browserExecutableFolder">browserExecutableFolder</param>
        /// <param name="userDataFolder">userDataFolder</param>
        /// <param name="options">CoreWebView2EnvironmentOptions</param>
        /// <param name="func">Func</param>
        public async Task InitializeWebview2Async(Microsoft.Web.WebView2.WinForms.WebView2 webview,
                                                  string browserExecutableFolder         = null,
                                                  string userDataFolder                  = null,
                                                  CoreWebView2EnvironmentOptions options = null,
                                                  Func <AppRuntime> func                 = null)
        {
            userDataFolder = userDataFolder ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserData");
            AppRuntime.RunTime.WebView2Environment = await CoreWebView2Environment.CreateAsync(browserExecutableFolder, userDataFolder, options);

            await webview.EnsureCoreWebView2Async(AppRuntime.RunTime.WebView2Environment);

            if (func != null)
            {
                webview.Invoke(func);
            }
        }
Ejemplo n.º 27
0
        private async void InitializeWebView()
        {
            var tempFolder             = Path.GetTempPath();
            var webView2UserDataFolder = Path.Combine(tempFolder, WebView2UserDataFolder);

            try
            {
                webView2Environment = await CoreWebView2Environment.CreateAsync(null, webView2UserDataFolder);
            }
            catch (WebView2RuntimeNotFoundException)
            {
                MessageBox.Show("The WebView2 isn't installed. It is required for this app.");
                Environment.Exit(-1);
            }

            await webview.EnsureCoreWebView2Async(webView2Environment);
        }
Ejemplo n.º 28
0
        private async void IssueFileForm_Load(object sender, EventArgs e)
        {
            CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions()
            {
                AllowSingleSignOnUsingOSPrimaryAccount = true,
            };
            CoreWebView2Environment environment = await CoreWebView2Environment.CreateAsync(null, _userDataFolder, options).ConfigureAwait(true);

            await this.fileIssueBrowser.EnsureCoreWebView2Async(environment).ConfigureAwait(true);

            this.fileIssueBrowser.NavigationCompleted += NavigationComplete;

            this.TopMost = makeTopMost;
            Navigate(this.Url);

            this.fileIssueBrowser.CoreWebView2.HistoryChanged += CoreWebView2_HistoryChanged;
        }
Ejemplo n.º 29
0
        public BrowserInstance(BrowserInstanceSettings settings, string profilePath)
        {
            _settings    = settings;
            _profilePath = profilePath;

            var webViewOptions = new CoreWebView2EnvironmentOptions("--disable-web-security");

            _webView = new WebView2();
            _webView.EnsureCoreWebView2Async(
                CoreWebView2Environment.CreateAsync(userDataFolder: $"UserDataFolder.{settings.Profile}", options: webViewOptions).GetAwaiter().GetResult());
            _webView.NavigationCompleted += WebView_NavigationCompleted;
            _webView.NavigationStarting  += WebView_NavigationStarting;
            _webView.CoreWebView2InitializationCompleted += WebView_CoreWebView2Ready;
            _webView.DefaultBackgroundColor = System.Drawing.Color.Transparent;

            LoadSettings();
            _webView.Source = settings.Url;
        }
Ejemplo n.º 30
0
    public async Task Init(Settings setting, MoeSite site)
    {
        Site        = site;
        DataContext = setting;
        Closing    += OnClosing;
        this.SetWindowFluent(setting);
        try
        {
            MainBrowser.CoreWebView2InitializationCompleted += MainBrowserOnCoreWebView2InitializationCompleted;
            if (MainBrowser == null)
            {
                return;
            }
            var option = new CoreWebView2EnvironmentOptions();
            switch (NetOperator.GetProxyMode(setting, site.SiteSettings))
            {
            case Settings.ProxyModeEnum.None:
                option.AdditionalBrowserArguments = "--no-proxy-server";
                break;

            case Settings.ProxyModeEnum.Custom:
                option.AdditionalBrowserArguments = $"--proxy-server=http://{setting.ProxySetting}";
                break;

            case Settings.ProxyModeEnum.Ie:
                break;
            }
            Environment = await CoreWebView2Environment.CreateAsync(null, App.AppDataDir, option);

            AuthButton.Click          += AuthButtonOnClick;
            GoToLoginPageButton.Click += GoToLoginPageButtonOnClick;
            var _ = MainBrowser.EnsureCoreWebView2Async(Environment);
        }
        catch (Exception ex)
        {
            var result = MessageBox.Show(this, "未找到WebView2组件,需要下载吗?(需要Webview2组件才能显示网页登录界面)", App.DisplayName, MessageBoxButton.YesNo, MessageBoxImage.Question);
            if (result == MessageBoxResult.Yes)
            {
                "https://go.microsoft.com/fwlink/p/?LinkId=2124703".GoUrl();
            }
            Ex.Log(ex);
            Close();
        }
    }