public static List<string> GetFileDropPaths( IntPtr hwnd = default ) { List<string> list = new List<string>(); if( PI.OpenClipboard( hwnd ) ) { try { IntPtr clipboardData = PI.GetClipboardData( PI.CF_HDROP ); if( !( clipboardData != IntPtr.Zero ) ) { return list; } IntPtr hDrop = PI.GlobalLock( clipboardData ); if( !( hDrop != IntPtr.Zero ) ) { return list; } try { uint num = PI.DragQueryFile( hDrop, uint.MaxValue, null, 0 ); if( num > 0 ) { for( uint i = 0; i < num; i++ ) { const int MAX_PATH = 260; StringBuilder lpszFile = new StringBuilder( MAX_PATH ); PI.DragQueryFile( hDrop, i, lpszFile, lpszFile.Capacity ); if( lpszFile.Length > 0 ) { list.Add( lpszFile.ToString() ); } } } return list; } finally { PI.GlobalUnlock( clipboardData ); } } finally { PI.CloseClipboard(); } } return list; }