C # сохранение и последующее извлечение данных через буфер обмена - PullRequest
2 голосов
/ 19 января 2011

Хорошо,

Итак, у меня есть программа, которая автоматически копирует данные в буфер обмена, а затем в память.Я хочу сохранить данные, которые находятся в буфере обмена, до запуска моей программы, а затем скопировать их обратно в буфер обмена, как только я закончу то, что мне нужно сделать.из буфера обмена как такового:

IDataObject currentClipboard = Clipboard.GetDataObject();

Однако, когда я хочу снова поместить данные в буфер обмена, нужно ли мне знать, в каком формате эти данные передаются в него?* Есть ли способ сделать это?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Вы не можете надежно восстановить буфер обмена до его прежнего состояния.Период.С простыми форматами вы можете сойти с рук.Когда вы попадаете в более сложные форматы, особенно в OLE и частные форматы, это намного сложнее.Читайте об отложенном рендеринге, и вы поймете, что данные не обязательно находятся даже на блокноте.Поэтому, когда вы запрашиваете данные, чтобы вы могли их сохранить, вы будете вызывать длительные задержки.Рассмотрим 5000 ячеек из Excel, которые можно отобразить в 24 различных форматах, большинство из которых используют отложенный рендеринг (это означает, что они на самом деле не находятся в буфере обмена, пока вы не запросите данные в определенном формате, а затем Excel должен сгенерировать ихпо требованию).
И даже если бы вы могли, каждый раз, когда вы восстанавливаете данные, вы будете генерировать событие обновления буфера обмена, которое будет отправлено всем зарегистрированным читателям буфера обмена, которое будет реагировать на ваших shennanegans.В итоге: не делай этого.

1 голос
/ 19 января 2011

Посмотрите это сообщение, оно может иметь то, что вам нужно:

Странность с доступом к буферу обмена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...