¿Por qué la función OleGetClipboard () de Win32 devolvería CLIPBRD_E_CANT_OPEN?

StackOverflow https://stackoverflow.com/questions/139668

  •  02-07-2019
  •  | 
  •  

Pregunta

¿En qué circunstancias fallará la función de API Win32 OleGetClipboard () y devolverá CLIPBRD_E_CANT_OPEN ?

Más antecedentes: estoy ayudando con una corrección de errores de Firefox. Detalles aquí:

error 444800 - no se pueden recuperar datos de imágenes del portapapeles en formato sin pérdidas

En la prueba automatizada que ayudé a escribir, vemos que OleGetClipboard () a veces falla y devuelve CLIPBRD_E_CANT_OPEN . Eso es inesperado, y el código de Firefox para extraer los datos de la imagen del portapapeles de Windows depende de que la llamada se realice correctamente.

¿Fue útil?

Solución

La documentación dice que OleGetClipboard puede fallar con este código de error si OpenClipboard falla. A su vez, si lees esa documentación, dice:

" OpenClipboard falla si otra ventana tiene el portapapeles abierto. "

Es un recurso exclusivo: solo una ventana puede tener el portapapeles abierto a la vez. Básicamente, si no puedes hacerlo, espera un poco y vuelve a intentarlo.

Otros consejos

¿Su prueba se ejecuta en Terminal Services? Vea el error .

Por lo que veo en MSDN, parece implicar que el problema se origina con quien intentó poner los datos en en el portapapeles, i, .e. La fuente de los datos. Si su llamada a OleSetClipboard () falló, por cualquier razón, no podrá extraer cosas. Echaría un vistazo a cómo se están colocando los datos en el portapapeles, y veré si hay un caso de prueba que realice esto (copiando los datos en el portapapeles), y luego cause el problema del que está hablando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top