こんな方法があったのか。
てかそれって 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 ってのがあった
