怎样用python将一个文件放到剪贴板

Python013

怎样用python将一个文件放到剪贴板,第1张

Python3 安装 pypiwin32。

CF_HDROP: 与拖放服务相关的文件列表

import win32con

import win32clipboard as clipboard

def set_clipboard_file(filename):

    """

   复制到剪切板

    """

    clipboard.OpenClipboard()

    clipboard.EmptyClipboard()

    clipboard.SetClipboardData(win32con.CF_HDROP, filename)

    clipboard.CloseClipboard()

这边执行没有问题,版本如下

Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32

代码如下

import ctypes

def get(): 

    '''从剪切板中获得字符串'''

    h=ctypes.WinDLL('user32.dll')

    h.OpenClipboard(0) 

    aa=h.GetClipboardData(13) 

    ss=ctypes.c_wchar_p(aa) 

    h.CloseClipboard()

    return ss.value

def set(mystr):

    '''把字符串放到剪切板中,成功返回1,失败返回0'''

    u=ctypes.WinDLL('user32.dll')

    k=ctypes.WinDLL('kernel32.dll')

    s=mystr.encode('utf-16')

    s=s[2:]+b'\0\0'

    ss=ctypes.c_char_p(s)

    u.OpenClipboard(0)

    u.EmptyClipboard()

    k.GlobalAlloc.argtypes=[ctypes.c_uint32,ctypes.c_uint32]

    try:

        cb=k.GlobalAlloc(0,len(s))

        cb=ctypes.c_void_p(cb)

        print(type(cb))

        ctypes.memmove(cb,ss,len(s))

        rr=u.SetClipboardData(13,cb) # 13->unicode

    finally:

        u.CloseClipboard()

    if rr==0:

        return 0

    else:

        return 1

#-----

set("abcdefg")

程序返回

<class 'ctypes.c_void_p'>

from ctypes import *

import os

import win32con,win32clipboard

aString=windll.user32.LoadImageW(0,"new.bmp",win32con.IMAGE_BITMAP,0,0,win32con.LR_LOADFROMFILE)

print(aString)

if aString !=0: ## 由于图片编码问题 图片载入失败的话 aString 就等于0

win32clipboard.OpenClipboard()

win32clipboard.EmptyClipboard()

win32clipboard.SetClipboardData(win32con.CF_BITMAP, aString)

win32clipboard.CloseClipboard()

————————————————