@@ -128,6 +128,10 @@ Public Module ModLaunch
128
128
Loaders.Insert( 3 , New LoaderTask( Of Integer , Integer )( "内存优化" , AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30 })
129
129
Case 2 '关闭
130
130
End Select
131
+ '显示设置
132
+ If Setup.Get( "LaunchGraphicSetup" ) Then
133
+ Loaders.Insert( 3 , New LoaderTask( Of Integer , Integer )( "检查显示设置" , AddressOf McLaunchCheckGraphicSettings) With {.ProgressWeight = 2 })
134
+ End If
131
135
Dim LaunchLoader As New LoaderCombo( Of Object )( "Minecraft 启动" , Loaders) With {.Show = False }
132
136
If McLoginLoader.State = LoadState.Finished Then McLoginLoader.State = LoadState.Waiting '要求重启登录主加载器,它会自行决定是否启动副加载器
133
137
'等待加载器执行并更新 UI
@@ -203,6 +207,48 @@ NextInner:
203
207
204
208
# End Region
205
209
210
+ # Region "显示设置"
211
+
212
+ Private Sub McLaunchCheckGraphicSettings(Loader As LoaderTask( Of Integer , Integer ))
213
+ Const GPU_KEY As String = "Software\Microsoft\DirectX\UserGpuPreferences"
214
+ Const TARGET_SETUP As String = "GpuPreference=2;"
215
+ Dim javaPath As String = McLaunchJavaSelected.PathJavaw
216
+
217
+ McLaunchLog( "显示设置开始" )
218
+ '读取现行设置
219
+ Try
220
+ Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser
221
+ Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, False )
222
+ If regKey IsNot Nothing Then
223
+ Dim currentSetting As Object = regKey.GetValue(javaPath)
224
+ If currentSetting IsNot Nothing And TARGET_SETUP.Equals(currentSetting.ToString()) Then
225
+ McLaunchLog( "不需要调整显示设置" )
226
+ Exit Sub
227
+ End If
228
+ regKey.Close()
229
+ End If
230
+ Catch ex As Exception
231
+ McLaunchLog( "无法读取注册表,跳过显示设置" )
232
+ Exit Sub
233
+ End Try
234
+ '更新设置
235
+ Try
236
+ If Not IsAdmin() Then RunAsAdmin( "" )
237
+ Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser
238
+ Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, True )
239
+ If regKey Is Nothing Then
240
+ regKey = parentKey.CreateSubKey(GPU_KEY)
241
+ End If
242
+ regKey.SetValue(javaPath, TARGET_SETUP)
243
+ Catch ex As Exception
244
+ McLaunchLog( "无法写入显示设置" )
245
+ Exit Sub
246
+ End Try
247
+ McLaunchLog( "已修改显示设置" )
248
+ End Sub
249
+
250
+ # End Region
251
+
206
252
# Region "预检测"
207
253
208
254
Private Sub McLaunchPrecheck()
0 commit comments