3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonでクリップボードにファイルをコピーする方法 (Windows)

Last updated at Posted at 2022-12-20

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)

初めての投稿してみた!!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?