From 2e9ca1345ccdec17cc4782b2c44df1750c43c2ef Mon Sep 17 00:00:00 2001 From: nanhuajiaren <49112307+nanhuajiaren@users.noreply.github.com> Date: Thu, 13 Mar 2025 15:33:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=BE=E7=A4=BA=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=80=9A=E8=BF=87=E5=86=99?= =?UTF-8?q?=E5=85=A5=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=B0=86MC=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA=E2=80=9C=E9=AB=98=E6=80=A7=E8=83=BD=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Minecraft/ModLaunch.vb | 46 +++++++++++++++++++ .../Pages/PageSetup/ModSetup.vb | 1 + .../Pages/PageSetup/PageSetupLaunch.xaml | 7 +++ .../Pages/PageSetup/PageSetupLaunch.xaml.vb | 6 ++- 4 files changed, 59 insertions(+), 1 deletion(-) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 01b1bab..9d915ff 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -128,6 +128,10 @@ Public Module ModLaunch Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30}) Case 2 '关闭 End Select + '显示设置 + If Setup.Get("LaunchGraphicSetup") Then + Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("检查显示设置", AddressOf McLaunchCheckGraphicSettings) With {.ProgressWeight = 2}) + End If Dim LaunchLoader As New LoaderCombo(Of Object)("Minecraft 启动", Loaders) With {.Show = False} If McLoginLoader.State = LoadState.Finished Then McLoginLoader.State = LoadState.Waiting '要求重启登录主加载器,它会自行决定是否启动副加载器 '等待加载器执行并更新 UI @@ -203,6 +207,48 @@ NextInner: #End Region +#Region "显示设置" + + Private Sub McLaunchCheckGraphicSettings(Loader As LoaderTask(Of Integer, Integer)) + Const GPU_KEY As String = "Software\Microsoft\DirectX\UserGpuPreferences" + Const TARGET_SETUP As String = "GpuPreference=2;" + Dim javaPath As String = McLaunchJavaSelected.PathJavaw + + McLaunchLog("显示设置开始") + '读取现行设置 + Try + Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser + Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, False) + If regKey IsNot Nothing Then + Dim currentSetting As Object = regKey.GetValue(javaPath) + If currentSetting IsNot Nothing And TARGET_SETUP.Equals(currentSetting.ToString()) Then + McLaunchLog("不需要调整显示设置") + Exit Sub + End If + regKey.Close() + End If + Catch ex As Exception + McLaunchLog("无法读取注册表,跳过显示设置") + Exit Sub + End Try + '更新设置 + Try + If Not IsAdmin() Then RunAsAdmin("") + Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser + Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, True) + If regKey Is Nothing Then + regKey = parentKey.CreateSubKey(GPU_KEY) + End If + regKey.SetValue(javaPath, TARGET_SETUP) + Catch ex As Exception + McLaunchLog("无法写入显示设置") + Exit Sub + End Try + McLaunchLog("已修改显示设置") + End Sub + +#End Region + #Region "预检测" Private Sub McLaunchPrecheck() diff --git a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb index b23290e..39a4181 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb @@ -103,6 +103,7 @@ {"LaunchAdvanceRunWait", New SetupEntry(True)}, {"LaunchAdvanceAssets", New SetupEntry(False)}, {"LaunchAdvanceJava", New SetupEntry(False)}, + {"LaunchGraphicSetup", New SetupEntry(False)}, {"LaunchRamType", New SetupEntry(0)}, {"LaunchRamCustom", New SetupEntry(15)}, {"LinkEula", New SetupEntry(False, Source:=SetupSource.Registry)}, diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index 8b692a4..254aa50 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -170,6 +170,13 @@ + + + + + + diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb index c36c123..2b52e3a 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb @@ -45,6 +45,9 @@ CType(FindName("RadioRamType" & Setup.Load("LaunchRamType")), MyRadioBox).Checked = True SliderRamCustom.Value = Setup.Get("LaunchRamCustom") + '显示卡 + CheckAdvanceGraphicSetup.Checked = Setup.Get("LaunchGraphicSetup") + '高级设置 TextAdvanceJvm.Text = Setup.Get("LaunchAdvanceJvm") TextAdvanceGame.Text = Setup.Get("LaunchAdvanceGame") @@ -83,6 +86,7 @@ Setup.Reset("LaunchAdvanceAssets") Setup.Reset("LaunchAdvanceRun") Setup.Reset("LaunchAdvanceRunWait") + Setup.Reset("LaunchGraphicSetup") Setup.Reset("LaunchArgumentJavaAll") Setup.Reset("LaunchArgumentJavaSelect") @@ -110,7 +114,7 @@ Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndie.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex) End Sub - Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change + Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceGraphicSetup.Change If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked) End Sub