/// <summary> /// 指定されたシェルアイテムを削除する /// </summary> /// <param name="files">シェルアイテム配列</param> /// <param name="hwnd">通知先ウィンドウハンドル</param> public static void Delete(ShellItem[] files, IntPtr hwnd) { if (files.Length == 0) { return; } StringBuilder sb = new StringBuilder(); foreach (ShellItem si in files) { sb.Append(si.Path); sb.Append('\0'); } sb.Append('\0'); ShellAPI.SHFILEOPSTRUCT sh = new ShellAPI.SHFILEOPSTRUCT(); sh.hwnd = hwnd; sh.wFunc = ShellAPI.FOFunc.FO_DELETE; sh.pFrom = sb.ToString(); sh.pTo = null; sh.fFlags = ShellAPI.FOFlags.FOF_ALLOWUNDO; sh.fAnyOperationsAborted = 1; sh.hNameMappings = IntPtr.Zero; sh.lpszProgressTitle = "削除しています"; ShellAPI.SHFileOperation(ref sh); }
/// <summary> /// 指定されたファイルコピーする /// </summary> /// <param name="files">ファイル配列</param> /// <param name="pathTo">コピー先ディレクトリパス</param> /// <param name="hwnd">通知先ウィンドウハンドル</param> public static void Copy(string[] files, string pathTo, IntPtr hwnd) { if (files.Length == 0) { return; } StringBuilder sb = new StringBuilder(); foreach (string file in files) { sb.Append(file); sb.Append('\0'); } sb.Append('\0'); ShellAPI.SHFILEOPSTRUCT sh = new ShellAPI.SHFILEOPSTRUCT(); sh.hwnd = hwnd; sh.wFunc = ShellAPI.FOFunc.FO_COPY; sh.pFrom = sb.ToString(); sh.pTo = pathTo; sh.fFlags = ShellAPI.FOFlags.FOF_ALLOWUNDO; sh.fAnyOperationsAborted = 1; sh.hNameMappings = IntPtr.Zero; sh.lpszProgressTitle = "コピーしています"; ShellAPI.SHFileOperation(ref sh); }