IEnumerable <string> GetFilesCopiedFromRawData(byte[] data) { var files = new List <string>(); using (var memoryHandle = memoryHandleFactory.AllocateInMemory(data)) { var count = ClipboardApi.DragQueryFile(memoryHandle.Pointer, 0xFFFFFFFF, null, 0); FetchFilesFromMemory(files, memoryHandle, count); } return(files); }
static void FetchFilesFromMemory(List <string> files, IMemoryHandle memoryHandle, int count) { for (var i = 0u; i < count; i++) { var length = ClipboardApi.DragQueryFile(memoryHandle.Pointer, i, null, 0); var filenameBuilder = new StringBuilder(length); length = ClipboardApi.DragQueryFile(memoryHandle.Pointer, i, filenameBuilder, length + 1); var fileName = filenameBuilder.ToString(); files.Add(fileName); } }