I've been using the code below for 20 years now for text copy & paste.
No guarantees, though.
Regards,
Dietmar
def copy_to_clipboard(text, window_handle=0):
"""copy_to_clipboard(window_handle, text):
copy a string to the clipboard."""
win32clipboard.OpenClipboard(window_handle)
try:
win32clipboard.EmptyClipboard()
if sys.version_info.major==2:
is_unicode = isinstance(text, str)
else:
is_unicode = True
if is_unicode:
win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT, text)
else:
win32clipboard.SetClipboardText(text)
finally:
win32clipboard.CloseClipboard()
_formats = {}
def _format_to_number(format):
if not format in _formats:
number = win32clipboard.RegisterClipboardFormat(format)
_formats[format] = number
return _formats[format]
#def copy_from_clipboard(format=win32clipboard.CF_TEXT, window_handle=0):
def copy_from_clipboard(format=win32clipboard.CF_UNICODETEXT,
window_handle=0):
win32clipboard.OpenClipboard(window_handle)
if isinstance(format, str):
format = _format_to_number(format)
try:
ret = win32clipboard.GetClipboardData(format)
except TypeError:
return None
finally:
win32clipboard.CloseClipboard()
return ret
#def check_clipboard_format(format=win32clipboard.CF_TEXT, window_handle=0):
def check_clipboard_format(format=win32clipboard.CF_UNICODETEXT,
window_handle=0):
if isinstance(format, str):
format = _format_to_number(format)
win32clipboard.OpenClipboard(window_handle)
try:
return win32clipboard.IsClipboardFormatAvailable(format)
finally:
win32clipboard.CloseClipboard()
def get_clipboard_formats(window_handle=0):
format = 0
formats = []
win32clipboard.OpenClipboard(window_handle)
standard_formats = {}
for n in dir(win32clipboard):
if not n.startswith("CF_"): continue
standard_formats[getattr(win32clipboard, n)] = n[3:]
try:
while True:
format = win32clipboard.EnumClipboardFormats(format)
if not format:
break
if format in standard_formats:
formats.append(standard_formats[format])
else:
formats.append(
win32clipboard.GetClipboardFormatName(format) )
finally:
win32clipboard.CloseClipboard()
return formats
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32