こんな方法があったのか。
てかそれって 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")
と、せっかく用意した機能なのに… PresentationFramework.dll 内にあるというのに…
フックがあるので仕様により古いダイアログになるという Microsoft 側の大失敗があるし。
しかもフックを排除する方法が無い、Windows 7 でコレはないだろう。
のイメージがあって利用する気にもならんかった。
○B だけやたら豊富に揃っているね、どうしてもこの言語を残したいらしい。
ま、利用できるモンは利用すればいいだけさ。
参考までに以前書いた Linux (GNOME 限定)でのやりかた
ぱぇぽぃ2 ? Blog Archive ? g_file_trash ってのがあった