Browse Source

完成网页标题输出

CaptB 4 months ago
parent
commit
e7b4278c58
3 changed files with 74 additions and 89 deletions
  1. 18 46
      Form1.Designer.cs
  2. 53 38
      Form1.cs
  3. 3 5
      Readme.md

+ 18 - 46
Form1.Designer.cs

@@ -30,6 +30,7 @@
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
             statusStrip1 = new StatusStrip();
+            StatusLabel = new ToolStripStatusLabel();
             toolStripStatusLabel1 = new ToolStripStatusLabel();
             progressBar = new ToolStripProgressBar();
             progressLabel = new ToolStripStatusLabel();
@@ -71,11 +72,7 @@
             查找FToolStripMenuItem = new ToolStripMenuItem();
             查看VToolStripMenuItem = new ToolStripMenuItem();
             工具栏ToolStripMenuItem = new ToolStripMenuItem();
-            页面ToolStripMenuItem = new ToolStripMenuItem();
-            全屏ToolStripMenuItem = new ToolStripMenuItem();
             toolStripSeparator8 = new ToolStripSeparator();
-            源代码SToolStripMenuItem = new ToolStripMenuItem();
-            toolStripSeparator9 = new ToolStripSeparator();
             刷新RToolStripMenuItem = new ToolStripMenuItem();
             停止TToolStripMenuItem = new ToolStripMenuItem();
             前进QToolStripMenuItem = new ToolStripMenuItem();
@@ -96,7 +93,6 @@
             帮助和支持ToolStripMenuItem = new ToolStripMenuItem();
             关于EdgeVoyagerToolStripMenuItem = new ToolStripMenuItem();
             webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
-            StatusLabel = new ToolStripStatusLabel();
             statusStrip1.SuspendLayout();
             menuStrip1.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)webView21).BeginInit();
@@ -111,10 +107,15 @@
             statusStrip1.TabIndex = 2;
             statusStrip1.Text = "statusStrip1";
             // 
+            // StatusLabel
+            // 
+            StatusLabel.Name = "StatusLabel";
+            StatusLabel.Size = new Size(0, 18);
+            // 
             // toolStripStatusLabel1
             // 
             toolStripStatusLabel1.Name = "toolStripStatusLabel1";
-            toolStripStatusLabel1.Size = new Size(688, 18);
+            toolStripStatusLabel1.Size = new Size(719, 18);
             toolStripStatusLabel1.Spring = true;
             // 
             // progressBar
@@ -427,7 +428,7 @@
             // 
             // 查看VToolStripMenuItem
             // 
-            查看VToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { 工具栏ToolStripMenuItem, 页面ToolStripMenuItem, toolStripSeparator8, 源代码SToolStripMenuItem, toolStripSeparator9, 刷新RToolStripMenuItem, 停止TToolStripMenuItem, 前进QToolStripMenuItem, 后退WToolStripMenuItem });
+            查看VToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { 工具栏ToolStripMenuItem, toolStripSeparator8, 刷新RToolStripMenuItem, 停止TToolStripMenuItem, 前进QToolStripMenuItem, 后退WToolStripMenuItem });
             查看VToolStripMenuItem.Name = "查看VToolStripMenuItem";
             查看VToolStripMenuItem.Size = new Size(60, 21);
             查看VToolStripMenuItem.Text = "查看(&V)";
@@ -438,61 +439,41 @@
             工具栏ToolStripMenuItem.CheckOnClick = true;
             工具栏ToolStripMenuItem.CheckState = CheckState.Checked;
             工具栏ToolStripMenuItem.Name = "工具栏ToolStripMenuItem";
-            工具栏ToolStripMenuItem.Size = new Size(127, 22);
+            工具栏ToolStripMenuItem.Size = new Size(180, 22);
             工具栏ToolStripMenuItem.Text = "工具栏";
             // 
-            // 页面ToolStripMenuItem
-            // 
-            页面ToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { 全屏ToolStripMenuItem });
-            页面ToolStripMenuItem.Name = "页面ToolStripMenuItem";
-            页面ToolStripMenuItem.Size = new Size(127, 22);
-            页面ToolStripMenuItem.Text = "页面";
-            // 
-            // 全屏ToolStripMenuItem
-            // 
-            全屏ToolStripMenuItem.Name = "全屏ToolStripMenuItem";
-            全屏ToolStripMenuItem.Size = new Size(100, 22);
-            全屏ToolStripMenuItem.Text = "全屏";
-            // 
             // toolStripSeparator8
             // 
             toolStripSeparator8.Name = "toolStripSeparator8";
-            toolStripSeparator8.Size = new Size(124, 6);
-            // 
-            // 源代码SToolStripMenuItem
-            // 
-            源代码SToolStripMenuItem.Name = "源代码SToolStripMenuItem";
-            源代码SToolStripMenuItem.Size = new Size(127, 22);
-            源代码SToolStripMenuItem.Text = "源代码(&S)";
-            // 
-            // toolStripSeparator9
-            // 
-            toolStripSeparator9.Name = "toolStripSeparator9";
-            toolStripSeparator9.Size = new Size(124, 6);
+            toolStripSeparator8.Size = new Size(177, 6);
             // 
             // 刷新RToolStripMenuItem
             // 
             刷新RToolStripMenuItem.Name = "刷新RToolStripMenuItem";
-            刷新RToolStripMenuItem.Size = new Size(127, 22);
+            刷新RToolStripMenuItem.Size = new Size(180, 22);
             刷新RToolStripMenuItem.Text = "刷新(&R)";
+            刷新RToolStripMenuItem.Click += 刷新RToolStripMenuItem_Click;
             // 
             // 停止TToolStripMenuItem
             // 
             停止TToolStripMenuItem.Name = "停止TToolStripMenuItem";
-            停止TToolStripMenuItem.Size = new Size(127, 22);
+            停止TToolStripMenuItem.Size = new Size(180, 22);
             停止TToolStripMenuItem.Text = "停止(&O)";
+            停止TToolStripMenuItem.Click += 停止TToolStripMenuItem_Click;
             // 
             // 前进QToolStripMenuItem
             // 
             前进QToolStripMenuItem.Name = "前进QToolStripMenuItem";
-            前进QToolStripMenuItem.Size = new Size(127, 22);
+            前进QToolStripMenuItem.Size = new Size(180, 22);
             前进QToolStripMenuItem.Text = "前进(&Q)";
+            前进QToolStripMenuItem.Click += 前进QToolStripMenuItem_Click;
             // 
             // 后退WToolStripMenuItem
             // 
             后退WToolStripMenuItem.Name = "后退WToolStripMenuItem";
-            后退WToolStripMenuItem.Size = new Size(127, 22);
+            后退WToolStripMenuItem.Size = new Size(180, 22);
             后退WToolStripMenuItem.Text = "后退(&W)";
+            后退WToolStripMenuItem.Click += 后退WToolStripMenuItem_Click;
             // 
             // 收藏夹AToolStripMenuItem
             // 
@@ -601,11 +582,6 @@
             webView21.NavigationCompleted += webView21_NavigationCompleted;
             webView21.ContentLoading += webView21_ContentLoading;
             // 
-            // StatusLabel
-            // 
-            StatusLabel.Name = "StatusLabel";
-            StatusLabel.Size = new Size(0, 18);
-            // 
             // Form1
             // 
             AutoScaleDimensions = new SizeF(7F, 17F);
@@ -675,11 +651,7 @@
         private ToolStripSeparator toolStripSeparator7;
         private ToolStripMenuItem 查找FToolStripMenuItem;
         private ToolStripMenuItem 工具栏ToolStripMenuItem;
-        private ToolStripMenuItem 页面ToolStripMenuItem;
-        private ToolStripMenuItem 全屏ToolStripMenuItem;
         private ToolStripSeparator toolStripSeparator8;
-        private ToolStripMenuItem 源代码SToolStripMenuItem;
-        private ToolStripSeparator toolStripSeparator9;
         private ToolStripMenuItem 刷新RToolStripMenuItem;
         private ToolStripMenuItem 停止TToolStripMenuItem;
         private ToolStripMenuItem 前进QToolStripMenuItem;

+ 53 - 38
Form1.cs

@@ -1,6 +1,4 @@
-using Microsoft.Web.WebView2.WinForms;
 using Microsoft.Web.WebView2.Core;
-using Microsoft.Web.WebView2.Wpf;
 
 namespace EdgeVoyager
 {
@@ -10,7 +8,7 @@ namespace EdgeVoyager
         public Form1()
         {
             InitializeComponent();
-            InitializeAsync(); 
+            InitializeAsync();
         }
 
         async void InitializeAsync()
@@ -46,6 +44,7 @@ namespace EdgeVoyager
 
         private void webView21_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
         {
+            int num = 0;
             string currentUrl = webView21.Source.ToString();
             if (!comboBox1.Items.Contains(currentUrl))
             {
@@ -54,9 +53,35 @@ namespace EdgeVoyager
             comboBox1.Text = currentUrl;
             progressBar.Value = 0;
             progressLabel.Text = "0%";
+            StatusLabel.Text = "开始导航到:" + currentUrl; 
+            if (num != 0)
+            {
+                Form1 newForm = new Form1();
+
+                // 等待新窗口的WebView2控件初始化完成
+                newForm.webView21.CoreWebView2InitializationCompleted += (s, args) =>
+                {
+                    if (args.IsSuccess)
+                    {
+                        // 设置新窗口中WebView2控件的导航目标为当前要打开的URL
+                        newForm.webView21.CoreWebView2.Navigate(e.Uri);
+                    }
+                    else
+                    {
+                        // 初始化失败,可以进行相应的错误处理
+                        MessageBox.Show("WebView2初始化失败:" + args.InitializationException.Message);
+                    }
+                };
+
+                // 显示新窗口
+                newForm.Show();
+
+                // 取消当前的导航请求
+                e.Cancel = true;
+            }
         }
 
-        private void webView21_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
+        private async void webView21_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
         {
             string currentUrl = webView21.Source.ToString();
             if (!comboBox1.Items.Contains(currentUrl))
@@ -66,40 +91,9 @@ namespace EdgeVoyager
             comboBox1.Text = currentUrl;
             progressBar.Value = 100;
             progressLabel.Text = "100%";
-            if (e.IsSuccess)
-            {
-                string script = @"
-                    var title = document.title;
-                    window.domAutomationController.send(title);";
-                using (var result = await webview21.CoreWebView2.)
-                {
-                    string pageTitle = result?.GetString();
-                    Console.WriteLine($"页面标题: {pageTitle}");
-                }
-
-                // 获取网页的图标
-                string faviconUrl = await webView21.CoreWebView2.ExecuteScriptAsync("Array.from(document.querySelectorAll('link[rel=\"icon\"], link[rel=\"shortcut icon\"]')).map(link => link.href).find(url => url);");
-                faviconUrl = faviconUrl.Trim('"'); // 去掉引号
-
-                if (!string.IsNullOrEmpty(faviconUrl))
-                {
-                    using (var client = new HttpClient())
-                    {
-                        try
-                        {
-                            varfaviconData = await client.GetByteArrayAsync(faviconUrl);
-                            using (var ms = new MemoryStream(faviconData))
-                            {
-                                this.Icon = Icon.FromHandle((Bitmap.FromStream(ms)).GetHicon());
-                            }
-                        }
-                        catch (Exception ex)
-                        {
-                            StatusLabel.Text = ex.Message;
-                        }
-                    }
-                }
-            }
+            StatusLabel.Text = "完成。"; 
+            string title = await webView21.CoreWebView2.ExecuteScriptAsync("document.title;");
+            this.Text = "LYKNS EdgeVoyager:" + title.Trim('"');
         }
 
         private void comboBox1_KeyDown(object sender, KeyEventArgs e)
@@ -127,6 +121,7 @@ namespace EdgeVoyager
         {
             progressBar.Value = 50; // 假设加载内容时进度为50%
             progressLabel.Text = "50%";
+            StatusLabel.Text = "内容开始加载";
         }
         private async void SetZoomLevel(double zoomLevel)
         {
@@ -153,5 +148,25 @@ namespace EdgeVoyager
             if (zoom == 25)
                 toolStripMenuItem3.Enabled = false;
         }
+
+        private void 刷新RToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            webView21.CoreWebView2.Reload();
+        }
+
+        private void 停止TToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            webView21.CoreWebView2.Stop();
+        }
+
+        private void 前进QToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            webView21.CoreWebView2.GoForward();
+        }
+
+        private void 后退WToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            webView21.CoreWebView2.GoBack();
+        }
     }
 }

+ 3 - 5
Readme.md

@@ -1,7 +1,5 @@
 ![](https://www.lykns.com.cn/wp-content/uploads/2025/01/%E6%97%A0%E6%A0%87%E9%A2%98.png)
 # **下一步的任务:**
-1. 获取网页标题并显示在页面标题上
-2. 获取网页图标并显示在页面图标上
-3. 完成menustrip的所有按钮功能
-4. 复刻IE各种设置菜单
-5. ...
+1. 完成menustrip的所有按钮功能
+2. 复刻IE各种设置菜单
+3. ...