7

win32clipboard モジュールを使用して、ファイルへの参照を Python の Windows クリップボードに保存する方法はありますか。私の目標は、透明になるように画像を貼り付けることです。「png」ファイルを OneNote にドラッグ アンド ドロップするか、ファイルをコピーしてから OneNote に貼り付けると、透明性が維持されるようです。私が知る限り、クリップボードは透明な画像を保存できないため、ファイルへの参照でなければなりません。

私の調査によると、それには win32clipboard.CF_HDrop 属性が関係している可能性がありますが、よくわかりません。

要約すると、私の目標は、クリックできる、たとえば「img.png」という名前のデスクトップ上の特定のファイルを使用する、少しの Python コードを持つことです。その結果、「img.png」がクリップボードに保存され、他のプログラムに貼り付けることができます。基本的に、自分でデスクトップ上のファイルを選択し、右クリックして [コピー] を選択した場合と同じ動作です。

編集: このページは、何らかの方法で win32clipboard.CF_HDrop を使用する方法があることを示唆しているようです: http://timgolden.me.uk/pywin32-docs/win32clipboard__GetClipboardData_meth.html

「CF_HDROP」は「Unicodeファイル名のタプル」に関連付けられていると書かれています

4

2 に答える 2

1
from PythonMagick import Image
Image("img.png").write("clipboard:") 

PythonMagickのWindowsバイナリを取得します

于 2012-06-13T08:00:30.437 に答える
1

コメントには多くの書式設定オプションがないため、これは役立つかもしれないステップにすぎませんが、これを回答として書きます。

このサンプル スクリプトを作成しました。

import win32clipboard as clp, win32api

clp.OpenClipboard(None)

rc= clp.EnumClipboardFormats(0)
while rc:
    try: format_name= clp.GetClipboardFormatName(rc)
    except win32api.error: format_name= "?"
    print "format", rc, format_name
    rc= clp.EnumClipboardFormats(rc)

clp.CloseClipboard()

次に、エクスプローラーで画像ファイルを選択してコピーしました。次に、スクリプトは次の使用可能なクリップボード形式を報告します。

format 49161 DataObject
format 49268 Shell IDList Array
format 15 ?
format 49519 DataObjectAttributes
format 49292 Preferred DropEffect
format 49329 Shell Object Offsets
format 49158 FileName
format 49159 FileNameW
format 49171 Ole Private Data

私は Windows の専門家ではありませんが、この「Preferred DropEffect」は怪しいと思われます。ただし、これでうまくいく可能性があるので、最初に FileNameW を試してみます (OneNote がインストールされていません。申し訳ありません)。最後にヌル文字を含む「utf-16-le」としてエンコードされた(つまり、としてエンコードされた)フルパス名のみをデータとして期待しているようです'\0\0'

于 2012-08-01T10:02:48.340 に答える