Настройка содержимого буфера обмена для пользовательских данных

59
8

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

Clipboard.SetData(DataFormats.UnicodeText, myXML);

Я могу копировать и вставлять вещи правильно, но другие текстовые редакторы также могут вставить его. Я ожидал, что будет DataFormats.Custom для этой ситуации, но нет.

Есть ли способ отправить данные в буфер обмена только для моего приложения?

(Я предполагаю, что приложения проверяют доступные DataFormats перед извлечением содержимого буфера обмена и не извлекают их, если возвращаемый формат не является чем-то, что они могут обрабатывать. Например, Блокнот ничего не сделает, если я буду использовать команду Вставить после копирования изображения)

спросил(а) 2020-04-04T01:17:57+03:00 6 месяцев, 3 недели назад
1
Решение
58

Clipboard.SetData ожидает, что простая строка в качестве первого аргумента, DataFormat не является перечислением. Таким образом, вы можете сделать именно это:

Clipboard.SetData("my_custom_format", myXml);

Затем вы можете проверить, содержит ли буфер обмена ваши данные с помощью

if (Clipboard.ContainsData("my_custom_format")) {
var xml = Clipboard.GetData("my_custom_format");
}

И вы не сможете вставлять эти данные в другие редакторы, такие как "Блокнот".

ответил(а) 2020-04-04T01:23:06.900697+03:00 6 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема