From 7c75fe4d4b1b0bd0fc36a364b91d8590f37a49c1 Mon Sep 17 00:00:00 2001 From: Howard302 Date: Thu, 13 Aug 2026 10:45:09 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E5=90=AF=E5=8A=A8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=8C=89=20Esc=20=E5=8F=96=E6=B6=88=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=B8=B8=E6=88=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ModLaunch.vb 中添加 McLaunchCancel() 公共方法,封装取消启动逻辑 - 更新 PageLaunchLeft.vb 的 BtnCancel_Click 调用 McLaunchCancel() - 更新 FormMain.xaml.vb 的 Esc 键处理:启动中按 Esc 取消启动,否则返回上一级 Closes #9193 --- Plain Craft Launcher 2/FormMain.xaml.vb | 10 ++++++++-- .../Modules/Minecraft/ModLaunch.vb | 19 +++++++++++++++++++ .../Pages/PageLaunch/PageLaunchLeft.xaml.vb | 14 +------------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index 1f350cc..ea192bc 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -803,8 +803,14 @@ Public Class FormMain ' 在没有弹窗时:继续检查…… '========================== - '按 ESC 返回上一级 - If e.Key = Key.Escape Then TriggerPageBack() + '按 ESC:启动中则取消启动,否则返回上一级 + If e.Key = Key.Escape Then + If McLaunchLoader.State = LoadState.Loading Then + McLaunchCancel() + Else + TriggerPageBack() + End If + End If '更改隐藏版本可见性 If e.Key = Key.F11 AndAlso PageCurrent = FormMain.PageType.InstanceSelect Then FrmSelectRight.ShowHidden = Not FrmSelectRight.ShowHidden diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 3db9467..71bedf7 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -196,6 +196,25 @@ NextInner: End Try End Sub + ''' + ''' 取消正在进行的游戏启动。 + ''' + Public Sub McLaunchCancel() + If McLaunchLoaderReal IsNot Nothing Then + McLaunchLoaderReal.Cancel() + McLaunchLog("已取消启动") + Try + If McLaunchWatcher IsNot Nothing Then + McLaunchWatcher.Kill() + ElseIf McLaunchProcess IsNot Nothing Then + If Not McLaunchProcess.HasExited Then McLaunchProcess.Kill() + End If + Catch ex As Exception + Logger.Error(ex, "取消启动结束进程失败", LogBehavior.Toast) + End Try + End If + End Sub + #End Region #Region "内存优化" diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb index 0d0c7c0..f8bccb2 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb @@ -692,19 +692,7 @@ ExitRefresh: End Sub '取消按钮 Private Sub BtnCancel_Click() Handles BtnCancel.Click - If McLaunchLoaderReal IsNot Nothing Then - McLaunchLoaderReal.Cancel() - McLaunchLog("已取消启动") - Try - If McLaunchWatcher IsNot Nothing Then - McLaunchWatcher.Kill() - ElseIf McLaunchProcess IsNot Nothing Then - If Not McLaunchProcess.HasExited Then McLaunchProcess.Kill() - End If - Catch ex As Exception - Logger.Error(ex, "取消启动结束进程失败", LogBehavior.Toast) - End Try - End If + McLaunchCancel() End Sub '版本设置按钮 Private Sub BtnMore_Click() Handles BtnMore.Click