2008-11-12 8 views
5

J'essaie de copier à la fois une image d'un fichier et du texte d'un fichier dans le presse-papiers. Mon intention est alors d'ouvrir un document Word ou un email Outlook et de coller à la fois le texte et l'image dans une commande de collage standard (CTRL-V par exemple). Je peux faire les deux séparément assez facilement, mais les faire tous les deux en une seule opération ne semble pas fonctionner.Comment copier une image et un texte dans le presse-papiers en tant qu'objet?

Voilà comment j'ai les deux travaillant comme des opérations distinctes (uniquement lignes de code pertinents bien sûr, avec try/catch dépouillé, etc.):

Ajouter une image Presse-papiers:

.. .

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

...

Ajouter du texte au presse-papiers:

...

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

Clipboard.SetText(text); 

...

J'utilise C# et .net Framework 2.0 et le ciblage (dans un proche avenir et probablement Vista) Windows XP.

TIA

Répondre

1

Je remarqué qu'un objet peut être transmis dans

Dans ce cas, lorsque l'utilisateur appuie sur la commande pour coller, votre code pourrait exécuter deux fonctions , ou une fonction récursivement, et chaque fois obtenir les données que vous voulez et collez-le.

Donc, regardez en boucle ou récursion.

1

Peut-être que vous pouvez utiliser setDataObject ce qui nécessite un paramètre d'objet, vous pouvez utiliser un tableau d'objets?

Le tableau d'objets pourrait contenir vos données requises.

Voir ce lien:.

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

+0

Est-ce qu'un programme tel que Outlook ou MS Word comprendra pour afficher les deux objets si je le fais avec un tableau? Je dois pouvoir ouvrir n'importe quel programme et appuyer sur CTRL-V pour coller les deux objets en même temps. –

4

Vous pouvez utiliser le format RTF, qui peut combiner du texte et des graphiques. Notez que vous pouvez avoir CF_BITMAP et CF_TEXT dans le presse-papiers en même temps. Mais ce n'est pas utile. Vous obteniez le texte lorsque vous le collez dans le bloc-notes, vous obtenez le bitmap lorsque vous collez dans Paint, et la plupart des autres applications choisissaient l'un ou l'autre, mais jamais les deux. Donc, c'est simplement académique. Sorte de soigné, de la même manière que les dysfonctionnements des transporteurs sur Star Trek étaient soignés. Mais aussi désordonné.

+1

Ceci est la bonne réponse à cette question. Soit vous devez utiliser RTF ou utiliser le format de presse-papiers interne de MS Office et je ne sais pas si c'est documenté. Même Microsoft utilise RTF pour un exemple de collage d'une table dans [ICI] (http://support.microsoft.com/kb/216676). – Hossein