Ich versuche, nicht standardmäßige Daten aus der Zwischenablage mit DataPackageView.GetDataAsync
zu erhalten. Ich bin ratlos bei der Umwandlung der zurückgegebenen system.__ComObject
in eine Zeichenfolge. HierSo erhalten Sie eine Zeichenfolge von dataPackageView.GetDataAsync()
ist der Code:
var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dataPackageView.Contains("FileName"))
{
var data = await dataPackageView.GetDataAsync("FileName");
// How to convert data to string?
}
ich nach einer Lösung suchen, die mit jedem Nicht-Standard-Clipboard-Format arbeiten. "FileName" ist ein leicht zu testendes Format, da Sie es in die Zwischenablage kopieren können, indem Sie eine Datei im Windows Explorer kopieren.
In C++/Win32
, kann ich die Daten aus der Zwischenablage erhalten wie folgt:
OpenClipboard(nullptr);
UINT clipboarFormat = RegisterClipboardFormat(L"FileName");
HANDLE hData = GetClipboardData(clipboarFormat);
char * pszText = static_cast<char*>(GlobalLock(hData));
GlobalUnlock(hData);
CloseClipboard();
In C++
, die Daten aus der Zwischenablage ist nur ein Byte-Array. Es muss möglich sein, den gleichen Byte-Array in C# zu bekommen, aber ich habe keine Ahnung, auf Abwickeln/die system.__ComObject
bearbeitet Umwandlung: Umformulierung die Frage:
Wie erhalte ich einen String oder Array von Byes aus dem System .__ ComObject zurückgegeben von dataPackageView.GetDataAsync (someFormat), wobei someFormat ein beliebiges Zwischenablageformat ist, das von einer anderen Anwendung erstellt wurde?
Es ist mir sehr klar, wie man die Daten bekommt. Der schwierige Teil verwendet die Daten, die zurückgegeben werden.
Die akzeptierte Antwort muss zeigen, wie eine Zeichenfolge oder ein Array von Bytes aus den „Daten“ von
var data = await dataPackageView.GetDataAsync(someFormat);
Die Daten, die ich erhalten möchte, ist nicht unbedingt eine Datei. Wie in der Frage angegeben, suche ich nach einer Lösung, die mit jedem nicht standardmäßigen Zwischenablageformat funktioniert. –
Ich weiß, deshalb habe ich Sie auf den Artikel hingewiesen, der unterstützte Formate enthält. – SWilko
Der oben verlinkte MSDN-Artikel enthält keine Details zum Arbeiten mit den Daten, die von dataPackageView.GetDataAsync zurückgegeben werden. Der Code, den ich in der Frage aufgelistet habe, ruft DataPackageView.GetDataAsync bereits auf, wie der Artikel empfiehlt. Der Hauptpunkt meiner Frage ist, was mit diesen Daten zu tun ist. Die zurückgegebenen Daten sind ein System .__ ComObject, und ich habe keine Ahnung, wie man es benutzt. –