2012-08-09 21 views
6

He escrito una pequeña aplicación como prueba para ver qué Excel VSTOs son capaces de hacer. Sin embargo, me encontré con un problema.Preservar el portapapeles en la carga de VSTO

Cuando comienzo Excel, mi portapapeles se borra. He rastreado esto a través de Google para ser un problema con complementos (específicamente complementos COM) que cuando no se inicializan correctamente borrará el portapapeles automáticamente. Desafortunadamente para mí no sé cómo preservar el portapapeles en un VSTO y Google no es de mucha ayuda. No llamo a ninguna función que obviamente borre el portapapeles. Lo único en la función ThisAddin es un bloque if/else que lee de algunas propiedades y establece algunos indicadores.

He reflexionado sobre la idea de copiar datos en el portapapeles a algún objeto y luego simplemente reemplazar esto, pero parece muy raro y probablemente no funcione.

¿Alguien puede arrojar alguna luz sobre cómo/por qué mi VSTO despeja el portapapeles al iniciarse Excel y cómo puedo remediarlo?

EDIT:

Después de trazar un poco deeperI estaba equivocado acerca de que sea mi prueba persona complemento. Descubrí que era el complemento del equipo o Adobe Contribute. Dado el historial de Adobe con estas cosas, seguiría adelante y diría que probablemente fue el complemento de contribución. Gracias a todos por sus respuestas. Esto me enseñará a usar una instalación no convencional de Excel para la práctica de VSTO.

dejaré este tema abierto para que más personas puedan contribuir a las posibles razones por las que un VSTO Excel Add-In (o cualquier complemento para la suite ofimática) despejaría el portapapeles en el arranque.

+2

VSTO/Excel no borrará el portapapeles con solo el bloque de código IF/ENDIF. ¿Puedes compartir qué código tienes entre medio? –

+0

@SiddharthRout Estás en lo cierto. No hay forma de que pueda haber sido mi prueba VSTO. La actualización brinda más detalles. – Thenin

Respuesta

0

Es una tontería intentar hacer una copia de seguridad/restaurar el portapapeles, cuando existen tipos de datos complejos. Y generará eventos portapapeles no deseados. Ver mi respuesta anterior aquí: https://stackoverflow.com/a/2579846/289135

1

Lo mejor sería identificar el complemento que está destrozando el portapapeles y quitándolo.

Si eso no es una opción de pagar algunas de las respuestas de enlace de Chris. He hecho esto usando la API Win32 antes. Creo que lo que falta en las respuestas enumeradas son las llamadas a OpenClipboard (http://msdn.microsoft.com/en-us/library/windows/desktop/ms649048%28v=vs.85%29.aspx) y CloseClipboard.

+0

Lee la actualización. – Thenin

0

El complemento COM Adobe PDF Maker, módulo Bluetooth se borra el portapapeles cuando se inicia Excel. Deshabilitar para detener este comportamiento.

Cuestiones relacionadas