private static bool DoVerb(FolderItem Item, string Verb) { foreach (FolderItemVerb FIVerb in Item.Verbs()) { if (FIVerb.Name.ToUpper().Contains(Verb.ToUpper())) { FIVerb.DoIt(); return(true); } } return(false); }
/* #명령 인자값 * - 복원(&E) * - 잘라내기(&T) * - 삭제(&D) * - 속성(&R) */ //매개변수로 전달받은 파일 및 폴더를 복원 private bool DoVerb(FolderItem Item, string Verb) { foreach (FolderItemVerb FIVerb in Item.Verbs()) { if (FIVerb.Name.ToUpper().Contains(Verb.ToUpper())) { FIVerb.DoIt(); //지정된 경로, 즉 삭제되기 전의 경로로 복원하는 작업 Load_RecycleBinFile(); return(true); } } return(false); }
public static bool RestoreFromRecycle(ICollection <FileSystemInfo> restoreCollection) { try { Shell shell = new Shell(); //создаем новый экземпляр интерфейса Shell Folder recycler = shell.NameSpace(10); //настраиваемся на корзину :) //перебираем все выделенные элементы lvRecycle, поскольку lvRecycle.MultiSelect = true foreach (var file in restoreCollection) { //ищем элемент lvRecycle в корзине foreach (FolderItem2 fi in recycler.Items()) { if (fi.Name == ((FileSystemInfo)file).Name) { //нашли, теперь перебираем коллекцию т. н. "действий", в которых содержатся, в //частности, пункты контекстного меню Проводника (мне так показалось :)) foreach (FolderItemVerb FIVerb in fi.Verbs()) { string task = FIVerb.Name.ToUpper(); if (task.Contains("тановить".ToUpper()) || task.Contains("estore".ToUpper())) //* { FIVerb.DoIt(); //выполняем действие } break; } } } } //уничтожаем экземпляр COM-объекта Marshal.FinalReleaseComObject(shell); return(true); } catch { return(false); } }