diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index e92410fcf..ec7bda7da 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -1,4 +1,5 @@ Imports System.ComponentModel +Imports System.IO Imports System.Runtime.InteropServices Imports System.Windows.Interop Imports System.Windows.Media.Effects @@ -742,21 +743,28 @@ Public Class FormMain End If '确定拖放效果 e.Effects = DragDropEffects.None - If e.Data.GetDataPresent(DataFormats.Text) Then - Dim Str As String = e.Data.GetData(DataFormats.Text) + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + Dim Files As String() = e.Data.GetData(DataFormats.FileDrop) + If Files IsNot Nothing AndAlso Files.Length > 0 Then + e.Effects = DragDropEffects.Link + End If + ElseIf e.Data.GetDataPresent(DataFormats.Text) Then + Dim Str As String = TryCast(e.Data.GetData(DataFormats.Text), String) + If Str Is Nothing Then + PrevEffects = e.Effects + PrevData = e.Data + Return + End If If Str.StartsWithF("authlib-injector:yggdrasil-server:") Then e.Effects = DragDropEffects.Copy ElseIf Str.StartsWithF("file:///") Then e.Effects = DragDropEffects.Copy - End If - ElseIf e.Data.GetDataPresent(DataFormats.FileDrop) Then - Dim Files As String() = e.Data.GetData(DataFormats.FileDrop) - If Files IsNot Nothing AndAlso Files.Length > 0 Then - e.Effects = DragDropEffects.Link + ElseIf Path.IsPathRooted(Str) Then + e.Effects = DragDropEffects.Copy End If End If - PrevData = e.Data PrevEffects = e.Effects + PrevData = e.Data Log("[System] 设置拖放类型:" & GetStringFromEnum(e.Effects)) Catch ex As Exception Log(ex, "处理拖放时出错", LogLevel.Feedback) @@ -767,8 +775,12 @@ Public Class FormMain If e.Data.GetDataPresent(DataFormats.Text) Then '获取文本 Try - Dim Str As String = e.Data.GetData(DataFormats.Text) + Dim Str As String = TryCast(e.Data.GetData(DataFormats.Text), String) + If Str Is Nothing Then Return Log("[System] 接受文本拖拽:" & Str) + '虽然不想用 GoTo 这个晦气玩意儿,但是龙猫的代码只适合这玩意儿 + '之后重写吧(逃 + If Path.IsPathRooted(Str) Then GoTo PathText If Str.StartsWithF("authlib-injector:yggdrasil-server:") Then 'Authlib 拖拽 e.Handled = True @@ -801,6 +813,7 @@ Public Class FormMain Return End Try ElseIf e.Data.GetDataPresent(DataFormats.FileDrop) Then + PathText: '获取文件并检查 Dim FilePathRaw = e.Data.GetData(DataFormats.FileDrop) If FilePathRaw Is Nothing Then '#2690