Ejemplo n.º 1
0
		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;
		}