private static List <string> ClipboardGetFileDropList(IntPtr hwnd) { List <string> list = new List <string>(); if (PInvoke.OpenClipboard(hwnd)) { try { IntPtr clipboardData = PInvoke.GetClipboardData(15); if (!(clipboardData != IntPtr.Zero)) { return(list); } IntPtr hDrop = PInvoke.GlobalLock(clipboardData); if (!(hDrop != IntPtr.Zero)) { return(list); } try { uint num = PInvoke.DragQueryFile(hDrop, uint.MaxValue, null, 0); if (num > 0) { for (uint i = 0; i < num; i++) { StringBuilder lpszFile = new StringBuilder(260); PInvoke.DragQueryFile(hDrop, i, lpszFile, lpszFile.Capacity); if (lpszFile.Length > 0) { list.Add(lpszFile.ToString()); } } } return(list); } finally { PInvoke.GlobalUnlock(clipboardData); } } finally { PInvoke.CloseClipboard(); } } return(list); }