Sujet : Re: win32clipboard writing to clipboard on Windows 11
De : python (at) *nospam* mrabarnett.plus.com (MRAB)
Groupes : comp.lang.pythonDate : 18. Jun 2024, 03:30:46
Autres entêtes
Message-ID : <mailman.149.1718674435.2909.python-list@python.org>
References : 1 2
User-Agent : Mozilla Thunderbird
On 2024-06-17 20:27, Rob Cliffe via Python-list wrote:
Recently I acquired a new laptop running WIndows 11; my previous one
uses WIndows 10. I encountered a strange problem:
I am using the win32clipboard backage (part of pywin32), and when I use
SetClipboardData() to write text which consists ***entirely of digits***
to the clipboard, I either get an error (not always the same error
message) or a program crash. The problem does not appear if I use
SetClipboardText() instead. The problem does not occur on my old
machine (where I used the feature extensively).
Sample program:
from win32clipboard import *
OpenClipboard()
SetClipboardData(CF_UNICODETEXT, "A")
SetClipboardData(CF_UNICODETEXT, "A0")
SetClipboardData(CF_UNICODETEXT, "0A")
SetClipboardText("0", CF_UNICODETEXT)
print("OK so far")
SetClipboardData(CF_UNICODETEXT, "0")
CloseClipboard()
Sample output:
OK so far
Traceback (most recent call last):
File "C:\TEST*.PY", line 8, in <module>
SetClipboardData(CF_UNICODETEXT, "0")
pywintypes.error: (0, 'SetClipboardData', 'No error message is available')
Can anyone shed light on this?
Best wishes
Rob Cliffe
I tried it on Windows 10 and got this:
>>> from win32clipboard import *
>>> OpenClipboard()
>>> SetClipboardData(CF_UNICODETEXT, "A")
1830508101640
>>> CloseClipboard()
>>> OpenClipboard()
>>> SetClipboardData(CF_UNICODETEXT, "0")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pywintypes.error: (6, 'SetClipboardData', 'The handle is invalid.')
>>> CloseClipboard()
It looks like it's something to memory ownership:
https://stackoverflow.com/questions/1264137/how-to-copy-string-to-clipboard-in-cIf you're putting text on the clipboard, why not just use SetClipboardText()? That's what I do.