Буфер обмена может содержать более одного формата. Например, когда форматированный текст копируется из MS word, как форматированный текст, так и простой текст будут в буфере обмена, так что в зависимости от приложения, в которое вы вставляете, целевое приложение может принимать тот или иной формат, в зависимости от на что он поддерживает.
С MSDN :
Окно может разместить более одного объекта буфера обмена в буфер обмена,
каждый из которых представляет одну и ту же информацию в другом буфере обмена
формат. При помещении информации в буфер обмена, окно должно
предоставлять данные в максимально возможном количестве форматов. Чтобы узнать, сколько
форматы в настоящее время используются в буфере обмена, вызовите
Функция CountClipboardFormats.
Из-за этого win32clipboard.GetClipboardData
принимает один аргумент: format
, что по умолчанию win32clipboard.CF_TEXT
.
Когда вы вызываете его без аргументов, возникает ошибка: 1018 *, потому что формат TEXT отсутствует в буфере обмена.
Вместо этого вы можете запросить win32clipboard.CF_HDROP
формат, который "Кортеж файлов Unicode" :
import win32clipboard
win32clipboard.OpenClipboard()
filenames = win32clipboard.GetClipboardData(win32clipboard.CF_HDROP)
win32clipboard.CloseClipboard()
for filename in filenames:
print(filename)
См. Также Документ MSDN для стандартных форматов буфера обмена