c# – 如何从dataPackageView.GetDataAsync()获取字符串

c# – 如何从dataPackageView.GetDataAsync()获取字符串,第1张

概述我正在尝试使用DataPackageView.GetDataAsync从剪贴板中获取非标准格式的数据.我很难将返回的系统.__ ComObject转换为字符串. 这是代码: var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();if (dataPackageView.Contains 我正在尝试使用DataPackageVIEw.GetDataAsync从剪贴板中获取非标准格式的数据.我很难将返回的系统.__ ComObject转换为字符串.

这是代码:

var dataPackageVIEw = windows.ApplicationModel.DataTransfer.Clipboard.GetContent();if (dataPackageVIEw.Contains("filename")){  var data = await dataPackageVIEw.GetDataAsync("filename");  // How to convert data to string?}

我正在寻找一种适用于任何非标准剪贴板格式的解决方案. “filename”是一种易于测试的格式,因为您可以通过在windows资源管理器中复制文件将其放在剪贴板上.

在C / Win32中,我可以获得如下剪贴板数据:

OpenClipboard(nullptr);UINT clipboarFormat = RegisterClipboardFormat(L"filename");HANDLE hData = GetClipboardData(clipboarFormat);char * pszText = static_cast<char*>(GlobalLock(hData));GlobalUnlock(hData);CloseClipboard();

在C中,剪贴板数据只是一个字节数组.必须可以在C#中获得相同的字节数组,但我不知道解包/转换系统.__ ComObject

编辑:改述问题:

如何从系统中获取字符串或数组.___由DataPackageVIEw.GetDataAsync(someFormat)返回的ComObject,其中someFormat是由另一个应用程序创建的任意剪贴板格式?

我很清楚如何获取数据.困难的部分是使用返回的数据.

接受的答案必须显示如何从返回的“数据”创建字符串或字节数组

var data = await dataPackageVIEw.GetDataAsync(someFormat);
解决方法 如果你知道它的文件,你可以使用以下代码
var content = Clipboard.GetContent();IReadonlyList<IStorageItem> files = await content.GetStorageItemsAsync();var file = files.First() as Storagefile;

从MSDN article on StandardDataFormats起

The DataPackage class supports a number of legacy formats for interoperability between windows Store apps and desktop apps. To retrIEve these formats,you pass one of the following strings to the DataPackageVIEw.GetDataAsync method instead of a value from the StandardDataFormats class.

例如

var content = Clipboard.GetContent();var data = await content.GetDataAsync("PenData"); //Stream for HGLOBAL corresponding to CF_PENDATA
总结

以上是内存溢出为你收集整理的c# – 如何从dataPackageView.GetDataAsync()获取字符串全部内容,希望文章能够帮你解决c# – 如何从dataPackageView.GetDataAsync()获取字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存