الحصول على اسم الملف المنسوخ إلى الحافظة من مرفق البريد الإلكتروني في VB.NET

StackOverflow https://stackoverflow.com/questions/299805

سؤال

وإذا كان نسخ المستخدم ملف إلى الحافظة في 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top