Я делаю приложение C ++ / WinRT, которое использует историю буфера обмена Window 10, но по какой-то причине я могу получать только текст и изображения.
Мой код немного похож на этот ..
auto history = Clipboard::GetHistoryItemsAsync().get();
if (history.Status() == ClipboardHistoryItemsResultStatus::Success)
{
auto historyItemList = history.Items();
for (const auto& historyitem : historyItemList)
{
//Works
if (dataPackageView.Contains(StandardDataFormats::Text()))
{
GetClipboardText(dataPackageView);
}
//Works
if (dataPackageView.Contains(StandardDataFormats::Bitmap()))
{
GetClipboardBitmap(dataPackageView);
}
//Never triggers
if (dataPackageView.Contains(StandardDataFormats::Html()))
{
GetClipboardHtml(dataPackageView);
}
//Never triggers
if (dataPackageView.Contains(StandardDataFormats::StorageItems()))
{
GetClipboardStorageItems(dataPackageView);
}
//etc..
Я бы хотел использовать другие форматы данных. НАПРИМЕР: Для StorageItems я ожидал, что я CTRL + C элемент со своего рабочего стола или если я сделаю это программно с помощью
dataPackage.SetStorageItems({ std::begin(files), std::end(files) });
Clipboard::SetContent(dataPackage);
Clipboard::Flush();
Файл окажется в истории буфера обмена, чтобы я мог обрабатывать его, как в первый фрагмент. Но файл никогда не появляется в возвращенном контейнере Clipboard :: GetHistoryItemsAsyn c (). Я также не вижу файл в средстве просмотра истории, когда вы нажимаете WIN + V. только "необработанный текст и изображения"? Могу я не использовать другие свойства dataformat? (ApplicationLink, Html, Rtf, StorageItems, Uri, Weblink et c)
Я привел StorageItems в качестве примера, но это происходит и с другими форматами. Если я CTRL + C веб-ссылка (например:
{ ссылка }), я ожидал, что dataPackageView.Contains (StandardDataFormats :: WebLink ()) или Uri сработает, но они не Если история буфера обмена может поддерживать другие форматы, как вы на самом деле его используете?
Изменить: забыл добавить. Когда я программно добавил StorageItem в буфер обмена, я также попробовал, как показано ниже. Не знаю, почему я не могу добавлять строки в IVector.
auto options = ClipboardContentOptions();
auto formats = Windows::Foundation::Collections::IVector<hstring>();
formats.Append(StandardDataFormats::StorageItems()); //Unhandled Exception
options.IsAllowedInHistory(true);
options.IsRoamable(true);
options.HistoryFormats() = formats;
options.RoamingFormats() = formats;
Clipboard::Clipboard::Clear();
Clipboard::SetContentWithOptions(dataPackage, options);
Clipboard::Flush();