Windowsのみで動作します
PythonからC# .NETを呼び出しているだけなので速度が若干遅いです
筆者の環境
OS: Windows 11 Pro 22H2 22621.963
Python: 3.10.6
事前準備
PythonからC# .NETを呼び出すためにpythonnetをインストールします
pip3 install pythonnet
実際に書いていく
pythonnetのclrをインポートします
main.py
import clr
.NETから必要なクラスを呼び出すための準備をします
.NETのクラスをインポートするには先にclr.AddReference()でネームスペースを参照に追加しておく必要があります
main.py
clr.AddReference('System.Collections.Specialized')
clr.AddReference('System.Windows.Forms')
from System.Collections.Specialized import StringCollection
from System.Windows.Forms import Clipboard
ファイルパスを格納していくためのStringCollectionを作成します
main.py
files = StringCollection()
StringCollectionにコピーしたいファイルのパスを追加します
StringCollectionはPythonで言うところのリスト(文字列専用)みたいな物なので複数個追加することもできます
main.py
file_path = 'C:\\Users\\Rilm2525\\Desktop\\test.exe'
files.Add(file_path)
Clipboard.SetFileDropList()にfilesを入れ実行するとWindowsのクリップボードにファイルがコピーされます
main.py
Clipboard.SetFileDropList(files)
まとめ
main.py
#インポート、参照
import clr
clr.AddReference('System.Collections.Specialized')
clr.AddReference('System.Windows.Forms')
from System.Collections.Specialized import StringCollection
from System.Windows.Forms import Clipboard
#コピーするファイルパスを設定
file_path = 'C:\\Users\\Rilm2525\\Desktop\\test.exe'
#.NETのStringCollectionを作成し、file_pathを追加する(Addを繰り返すことによって複数個追加できる)
files = StringCollection()
files.Add(file_path)
#先程作成したファイルのリストをクリップボードにセットする
Clipboard.SetFileDropList(files)
初めての投稿してみた!!