Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }