Pregunta

Estoy tratando de copiar una imagen de un archivo y el texto de un archivo al portapapeles. Mi intención es abrir un documento de Word o un correo electrónico de Outlook y pegar tanto el texto como la imagen en un comando de pegado estándar (CTRL-V, por ejemplo). Puedo hacer las dos cosas por separado con bastante facilidad, pero hacer ambas cosas en una sola operación no parece funcionar.

Así es como tengo los dos trabajando como operaciones separadas (solo líneas de código relevantes, por supuesto, con try / catch eliminado, etc.):

Añadir imagen al portapapeles:

...

Bitmap imageToAdd = new Bitmap(imageFilePath);
Clipboard.SetImage(imageToAdd);

...

Añadir texto al portapapeles:

...

StreamReader rdr = new StreamReader(textFilePath);
string text = rdr.ReadToEnd();

Clipboard.SetText(text);

...

Estoy usando c # y .net 2.0 framework y apunto a Windows XP (y probablemente a Vista en un futuro cercano).

TIA

¿Fue útil?

Solución

Noté que solo se puede pasar un objeto.

En ese caso, cuando el usuario presiona el comando para pegar, su código podría ejecutar dos funciones, o una función recursivamente, y cada vez obtener los datos que desea y pegarlos.

Entonces, mire el bucle o la recursividad.

Otros consejos

Podría usar RTF, que podría combinar texto y gráficos. Tenga en cuenta que PUEDE tener CF_BITMAP y CF_TEXT en el portapapeles al mismo tiempo. Pero no es útil. Obtendría el texto cuando lo pegue en el bloc de notas, obtendrá el mapa de bits cuando pegue en Paint, y la mayoría de las otras aplicaciones elegirían una u otra, pero nunca ambas. Entonces es meramente académico. Un poco ordenado, en la forma en que el mal funcionamiento del transportador en Star Trek era ordenado. Pero también desordenado.

¿Quizás podría usar SetDataObject que requiere un parámetro Object, podría usar una matriz de objetos?

La matriz de objetos podría contener sus datos requeridos.

Ver este enlace:

http://msdn.microsoft.com/en-us/library /5b8kt5z4.aspx

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