[python-win32] Not able to paste file in windows explorer using SetClipboardData
game4 sale
gamz4sale at gmail.com
Wed May 21 10:49:51 CEST 2014
Hi,
I am trying to copy an image file to windows clipboard using my code and
paste it manually in any folder in windows explorer. I am using
*Windows 8* *64bit
*laptop, running *Python 2.7 *and *pywin32-218* for win32 APIs
I managed to paste my file in Wordpad application. But, i cannot paste
inside windows explorer. The Paste menu is disabled. Any help/suggestions
would be much appreciated.
Attached my code for reference.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20140521/b5e2d105/attachment.html>
-------------- next part --------------
from win32api import *
from win32clipboard import *
import time
import pythoncom
import struct
from pywin32_testutil import str2bytes
import ctypes
msvcrt = ctypes.cdll.msvcrt
kernel32 = ctypes.windll.kernel32
ret_stg=None
GMEM_MOVEABLE = 0x0002
def set_clipboard(content):
ret_stg = pythoncom.STGMEDIUM()
fname_buf=str2bytes(content)
fname_ba=bytearray(fname_buf)
fname_ba.append('\0')
fname_ba.append('\0')
fmt="lllll%ss" %len(fname_ba)
df=struct.pack(fmt, 20, 0, 0, 0, 0, str(fname_ba))
ret_stg.set(pythoncom.TYMED_HGLOBAL, df)
try:
OpenClipboard()
except:
print "open failed, exception=%s"%FormatMessage(GetLastError())
else:
try:
SetClipboardData(CF_HDROP, ret_stg.data)
except:
print "set failed, exception = %s"%FormatMessage(GetLastError())
finally:
CloseClipboard()
def get_clipboard():
try:
OpenClipboard()
except:
print "open failed, exception=%s"%FormatMessage(GetLastError())
else:
if(IsClipboardFormatAvailable(CF_HDROP)):
handle = GetClipboardDataHandle(CF_HDROP)
file_cnt = DragQueryFile(handle)
print "file count = %ld"%file_cnt
for i in range(0,file_cnt):
file_path = DragQueryFile(handle, i)
print "file name = %s"%file_path
elif(IsClipboardFormatAvailable(CF_UNICODETEXT)):
print "CF_UNICODETEXT content"
clip_data = GetClipboardData(CF_UNICODETEXT)
print "*** content = %s ***"%clip_data
else:
print "unsupported clipboard format"
finally:
CloseClipboard()
if __name__ == '__main__':
file1 = "E:\\pics\\ferrari.jpg"
set_clipboard(file1)
time.sleep(1)
get_clipboard()
More information about the python-win32
mailing list