diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index eb4bb68..49e51e8 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