Sto cercando di ottenere i dati in formato non standard dagli appunti utilizzando DataPackageView.GetDataAsync
. Sono stumped sulla conversione del system.__ComObject
restituito a una stringa.Come ottenere una stringa da dataPackageView.GetDataAsync()
Ecco il codice:
var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dataPackageView.Contains("FileName"))
{
var data = await dataPackageView.GetDataAsync("FileName");
// How to convert data to string?
}
Sto cercando una soluzione che funziona con qualsiasi formato di Appunti non standard. "FileName" è un formato facilmente verificabile in quanto è possibile inserirlo negli appunti copiando un file in Esplora risorse.
In C++/Win32
, posso ottenere i dati clipboard come segue:
OpenClipboard(nullptr);
UINT clipboarFormat = RegisterClipboardFormat(L"FileName");
HANDLE hData = GetClipboardData(clipboarFormat);
char * pszText = static_cast<char*>(GlobalLock(hData));
GlobalUnlock(hData);
CloseClipboard();
In C++
, i dati clipboard è solo un array di byte. Deve essere possibile ottenere lo stesso array di byte in C#, ma non ho alcun indizio su scartare/conversione della Edit system.__ComObject
: riformulare la domanda:
Come faccio ad avere una stringa o un array di bye fuori dal sistema .__ ComObject restituito da dataPackageView.GetDataAsync (someFormat), dove someFormat è un formato di clipboard arbitrario creato da un'altra applicazione?
È molto chiaro per me come ottenere i dati. La parte difficile è usare i dati che vengono restituiti.
La risposta accettata deve mostrare come creare una stringa o un array di byte dai "dati" restituiti da
var data = await dataPackageView.GetDataAsync(someFormat);
I dati che voglio ottenere non sono necessariamente un file. Come indicato nella domanda, sto cercando una soluzione che funzioni con qualsiasi formato di appunti non standard. –
So che questo è il motivo per cui ti ho indirizzato all'articolo contenente i formati supportati – SWilko
L'articolo MSDN collegato sopra non fornisce dettagli sull'utilizzo dei dati restituiti da dataPackageView.GetDataAsync. Il codice che ho elencato nella domanda chiama già dataPackageView.GetDataAsync, come consiglia l'articolo. Il punto principale della mia domanda è cosa fare con quei dati. I dati restituiti sono un sistema .__ ComObject e non ho idea di come usarlo. –