2008-11-12 77 views
5

我试图将文件和文本中的图像从文件复制到剪贴板。我的意图是打开Word文档或Outlook电子邮件,并将文本和图像粘贴到一个标准粘贴命令(例如CTRL-V)中。我可以很容易地将两者分开,但在一次操作中完成它们似乎不起作用。如何将图像和文本作为一个对象复制到剪贴板?

这是怎么了,我得到了两个工作作为单独的操作(当然只是相关的代码行,用的try/catch剥离出来等):

添加图片到剪贴板:

.. 。

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

...

添加文本到剪贴板:

...

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

Clipboard.SetText(text); 

...

我使用C#和.NET 2.0框架和(在不久的将来很可能和Vista)的针对Windows XP。

TIA

回答

1

我发现只有一个对象可以被传递

在这种情况下,当用户按下命令来粘贴,你的代码可以执行两个功能,或者递归地递归一个函数,并且每次获取所需的数据并粘贴进去。

所以,看看循环或递归。

1

也许你可以使用SetDataObject这需要一个对象参数,你可以使用一个对象数组?

对象数组可以容纳您所需的数据。

请参阅此链接:

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

+0

像Outlook或MS Word这样的程序能够理解如果我用数组来做这件事情的话,它们能够显示两个对象吗?我需要能够打开任何程序,只需按下CTRL-V即可同时粘贴两个对象。 – 2008-11-13 16:54:33

4

您可以使用RTF,它可以结合文本和图形。请注意,您可以同时在剪贴板上使用CF_BITMAP和CF_TEXT。但它没用。当你粘贴到记事本中时,你会得到文本,当你粘贴到Paint中时你会得到位图,而大多数其他应用程序会选择其中一个,但从来都不是。所以这只是学术。整洁的方式,在星际迷航运输机故障是整洁。但也凌乱。

+1

这是这个问题的正确答案。要么你应该使用RTF或使用MS Office的内部剪贴板格式,我不知道它是否被记录。即使Microsoft使用RTF作为在[HERE](http://support.microsoft.com/kb/216676)中粘贴表的示例。 – Hossein 2013-05-03 17:59:11