.NET framework ゴミ箱

ファイルをごみ箱に削除する – IronPython

こんな方法があったのか。
てかそれって static なんだからインスタンスは作成しなくてもいいんだけど。

# -*- coding: UTF-8 -*-

import clr

clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")
# namespace Microsoft は PresentationCore にあるけど…
clr.AddReference("Microsoft.VisualBasic")

from System import *
from System.Windows import *
from Microsoft.VisualBasic.FileIO import *

class SendToRecycleBin(Window):
    """
        ファイルをドロップするとゴミ箱へ移動させる WPF Window
    """
    def __init__(self):
        self.Width = 320
        self.Height = 240
        self.Title = "SendToRecycleBin"
        self.AllowDrop = True
        self.Drop += self.on_drop

    def on_drop(self, sender, e):
        files = e.Data.GetData(DataFormats.FileDrop)
        for file in files:
            FileSystem.DeleteFile(  file,
                                    UIOption.OnlyErrorDialogs,
                                    RecycleOption.SendToRecycleBin )

if __name__ == "__main__":
    a = Application()
    a.Run(SendToRecycleBin())

つまりこれでいい。
しかし何故その名前空間なんだ?意味不明だし今までみつからないわけだ。
普通なら

.NET framework ゴミ箱

なんてなキーワードで探すもん。
他の言語ではできないしみたいじゃん。
○B 屋って必ず「○B で」って書くからね。

しかし Microsoft 名前空間といえば

import Microsoft

def on_open(sender, e):
    dlg = Microsoft.Win32.OpenFileDialog()
    if dlg.ShowDialog(self):
        MessageBox.Show("push ok")

openfiledlg7

と、せっかく用意した機能なのに… PresentationFramework.dll 内にあるというのに…
フックがあるので仕様により古いダイアログになるという Microsoft 側の大失敗があるし。
しかもフックを排除する方法が無い、Windows 7 でコレはないだろう。
のイメージがあって利用する気にもならんかった。

.NET Framework クラス ライブラリ

○B だけやたら豊富に揃っているね、どうしてもこの言語を残したいらしい。
ま、利用できるモンは利用すればいいだけさ。

参考までに以前書いた Linux (GNOME 限定)でのやりかた
ぱぇぽぃ2 ? Blog Archive ? g_file_trash ってのがあった