private static extern void GetSortColumns(IShellView view, int index, out SORTCOLUMN sc);
        /// <summary>
        /// Sets the column in which will be sorted
        /// </summary>
        /// <param name="pk">The propertykey list that identifies columns</param>
        /// <param name="Order">The sort order list</param>
        public void SetSortCollumn(List<PROPERTYKEY> pk, List<SORT> Order)
        {
            SORTCOLUMN[] scl = new SORTCOLUMN[pk.Count];
            IFolderView2 ifv2 = GetFolderView2();
            for (int i = 0; i < pk.Count; i++)
            {
                SORTCOLUMN sc = new SORTCOLUMN();
                sc.propkey = pk[i];
                sc.direction = Order[i];
                scl[i] = sc;
            }

            SetSortColumns(ifv2, pk.Count, scl);
        }
        public void GetSortColInfo(out SORTCOLUMN ci)
        {
            try
            {
                IFolderView2 ifv2 = GetFolderView2();
                SORTCOLUMN sc = new SORTCOLUMN();
                int SortColsCount = -1;
                ifv2.GetSortColumnCount(out SortColsCount);
                if (SortColsCount > 0)
                {
                    GetSortColumns(GetShellView(), 0, out sc); 
                }
                
                //SORTCOLUMN newsc = (SORTCOLUMN)Marshal.PtrToStructure(scptr, typeof(SORTCOLUMN));
                ci = sc;
                //Marshal.FreeHGlobal(scptr);

            }
            catch (Exception)
            {
                SORTCOLUMN sc = new SORTCOLUMN();
                ci = sc;
            }
        }
 /// <summary>
 /// Sets the column in which will be sorted
 /// </summary>
 /// <param name="pk">The propertykey that identifies column</param>
 /// <param name="Order">The sort order</param>
 public void SetSortCollumn(PROPERTYKEY pk, SORT Order)
 {
     
     IFolderView2 ifv2 = GetFolderView2();
     SORTCOLUMN sc = new SORTCOLUMN();
     sc.propkey = pk;
     sc.direction = Order;
     IntPtr scptr = Marshal.AllocHGlobal(Marshal.SizeOf(sc));
     Marshal.StructureToPtr(sc, scptr, false);
     ifv2.SetSortColumns(scptr, 1);
     Marshal.FreeHGlobal(scptr);
 }