VB.NETの電子メールの添付ファイルからクリップボードにコピーされたファイルの名前を取得する

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

質問

ユーザーがOutlookの電子メール添付ファイルからWindowsのクリップボードにファイルをコピーした場合、VB.NETでそのファイルの名前を取得する方法はありますか?

ファイルがWindowsエクスプローラーからコピーされた場合、 Clipboard.GetFileDropList にはこれを取得するために使用できるデータがありますが、ファイルが電子メールの添付ファイルからコピーされるとそのリストは空になります( 4つの利用可能な形式- FileGroupDescriptorW FileGroupDescriptor RenPrivateItem および FileContents )。

ファイルをWindowsエクスプローラーに貼り付けることができ、添付ファイルの名前を付けて貼り付けるので、これが可能になるはずです。

役に立ちましたか?

解決

形式が 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