Ну, вы можете просто прочитать данные прямо из System.Windows.Clipboard
. Это так просто!
Возможно, вам придется работать с некоторыми из более эзотерических форматов данных, но как только данные окажутся в буфере обмена, вы сможете их прочитать. Для Word вы можете обнаружить, что формат HTML, который он помещает в буфер обмена, вполне соответствует вашим потребностям.
Здесь нет проблем безопасности или конфиденциальности, потому что пользователь дал согласие на запуск вашей программы. Было бы неправильно разрешать вам читать буфер обмена другого зарегистрированного пользователя, но вы не можете этого сделать.
Вы обновили вопрос и теперь задаете что-то более конкретное. Поэтому я скопировал некоторые виджеты в буфер обмена, а затем воспользовался средством просмотра буфера обмена, чтобы увидеть, какие там форматы. Тот, который выскочил, был CF_DESIGNERCOMPONENTS_V2
. Быстрый поиск по сайту привел меня на этот сайт:
http://www.windowsdevelop.com/windows-forms-designer/for-designer-copycutpaste-what-type-data-format-does-ms-set-the-clipboard-dataobject-to-8507.shtml
Там есть некоторый код, по-видимому, от Reflector, который показывает, как дизайнер обрабатывает команду Копировать:
protected void OnMenuCopy(object sender, EventArgs e)
{
if (this.SelectionService != null)
{
Cursor cursor1 = Cursor.Current;
try
{
Cursor.Current = Cursors.WaitCursor;
ICollection collection1 = this.GetCopySelection();
collection1 = this.PrependComponentNames(collection1);
IDesignerSerializationService service1 = (IDesignerSerializationService) this.GetService(typeof(IDesignerSerializationService));
if (service1 != null)
{
object obj1 = service1.Serialize(collection1);
MemoryStream stream1 = new MemoryStream();
new BinaryFormatter().Serialize(stream1, obj1);
stream1.Seek((long) 0, SeekOrigin.Begin);
byte[] buffer1 = stream1.GetBuffer();
IDataObject obj2 = new DataObject("CF_DESIGNERCOMPONENTS_V2", buffer1);
Clipboard.SetDataObject(obj2);
}
this.UpdateClipboardItems(null, null);
}
finally
{
Cursor.Current = cursor1;
}
}
}
Это должно помочь вам начать!