Próbuję uzyskać niestandardowe formatowanie danych ze schowka przy użyciu DataPackageView.GetDataAsync
. Zastanawiam się nad konwersją zwróconego system.__ComObject
na ciąg znaków.Jak uzyskać ciąg od dataPackageView.GetDataAsync()
Oto kod:
var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dataPackageView.Contains("FileName"))
{
var data = await dataPackageView.GetDataAsync("FileName");
// How to convert data to string?
}
szukam rozwiązanie, które będzie pracować z każdym niestandardowym formacie schowka. "FileName" jest formatem łatwym do przetestowania, ponieważ można go umieścić w schowku, kopiując plik w Eksploratorze Windows.
W C++/Win32
mogę uzyskać dane schowka następująco:
OpenClipboard(nullptr);
UINT clipboarFormat = RegisterClipboardFormat(L"FileName");
HANDLE hData = GetClipboardData(clipboarFormat);
char * pszText = static_cast<char*>(GlobalLock(hData));
GlobalUnlock(hData);
CloseClipboard();
W C++
, dane Schowek jest tylko tablicą bajtów. To musi być możliwe, aby uzyskać tę samą tablicę bajtów w C#, ale nie mam pojęcia o rozpakowanie/przekształcenie system.__ComObject
Edycja: Parafrazując pytanie:
Jak uzyskać ciąg lub tablicę byes z systemu .__ ComObject zwrócony przez dataPackageView.GetDataAsync (someFormat), gdzie someFormat jest arbitralnym formatem schowka utworzonym przez inną aplikację?
Jest bardzo jasne, jak uzyskać dane. Najtrudniejszą częścią jest wykorzystanie zwróconych danych.
Przyjęty odpowiedź musi pokazać, jak stworzyć łańcuch lub tablicę bajtów z „dane” zwróconych przez
var data = await dataPackageView.GetDataAsync(someFormat);
Dane, które chcę uzyskać, niekoniecznie są plikami. Jak stwierdzono w pytaniu, szukam rozwiązania, które będzie działać z każdym niestandardowym formatem schowka. –
Wiem, dlaczego wskazałem ci artykuł zawierający obsługiwane formaty. – SWilko
Artykuł MSDN, do którego odnośniki powyżej, nie zawiera żadnych szczegółów dotyczących pracy z danymi zwróconymi przez dataPackageView.GetDataAsync. Kod, który podałem w pytaniu, już wywołuje metodę dataPackageView.GetDataAsync, zgodnie z zaleceniami artykułu. Głównym punktem mojego pytania jest to, co zrobić z tymi danymi. Zwrócone dane to system .__ ComObject i nie mam pojęcia, jak z niego korzystać. –