Copiar imagen PIL / PILLOW en el portapapeles de Windows

He vistoesta pregunta y seguí cada paso, cambiando el código para satisfacer mis requisitos, que son Python3, Pillow y ctypes. Mientras menos bibliotecas, mejor.

import ctypes
from PIL import ImageGrab, Image
from io import BytesIO

user32 = ctypes.windll.user32

img = ImageGrab.grab()
output = BytesIO()
img.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()

user32.OpenClipboard()
user32.EmptyClipboard()
user32.SetClipboardData(user32.CF_DIB, data)
user32.CloseClipboard()

Ese es el código eliminado de mi script que, creo, es el mismo código en la pregunta adaptada a mis requisitos. Cuando se ejecuta, debe copiar el escritorio actual en el portapapeles. Consigo esto en su lugar:

File "C:\Users\Gcq\Documents\python\Screen\Screen.py", line 132, in shot
    user32.OpenClipboard()
ValueError: Procedure probably called with not enough arguments (4 bytes missing)

Lo siento, estoy haciendo una pregunta tan (probablemente) fácil aquí, pero realmente no sé qué está fallando, y ctypes no es lo mío.

Respuestas a la pregunta(2)

Su respuesta a la pregunta