الحصول على اسم الملف المنسوخ إلى الحافظة من مرفق البريد الإلكتروني في VB.NET
سؤال
وإذا كان نسخ المستخدم ملف إلى الحافظة في Windows من مرفق البريد الإلكتروني في Outlook، هل هناك أي طريقة يمكنني الحصول على اسم هذا الملف في VB.NET؟
إذا تم نسخ ملف من مستكشف ويندوز، Clipboard.GetFileDropList
ديه البيانات التي يمكنني استخدامها للحصول على هذا، ولكن تلك القائمة فارغ عندما يتم نسخ الملف من مرفق البريد الإلكتروني (هناك أربعة الأشكال المتاحة فقط - FileGroupDescriptorW
، FileGroupDescriptor
، RenPrivateItem
وFileContents
).
وبدا الامر وكأننا هذا ينبغي أن يكون ممكنا، لأنني لا يمكن لصق الملف في ويندوز إكسبلورر ويلصق مع اسم المرفق.
المحلول
واتضح أنه يمكنك الحصول على اسم الملف من كائن البيانات الذي شكل هو FileGroupDescriptor
. هو رمز غامضة بعض الشيء، على الرغم من:
Dim fileName As New StringBuilder("")
Dim theStream As Stream = Clipboard.GetData("FileGroupDescriptor")
Try
Dim fileGroupDescriptor(512) As Byte
theStream.Read(fileGroupDescriptor, 0, 512)
Dim i As Integer = 76
While fileGroupDescriptor(i) <> 0
fileName.Append(Convert.ToChar(fileGroupDescriptor(i)))
i += 1
End While
Finally
If theStream IsNot Nothing Then theStream.Close()
End Try
لا تنتمي إلى StackOverflow