Пример #1
0
        private void  除_Click(object sender, EventArgs e)
        {
            ListView.SelectedListViewItemCollection SelectedItem = new ListView.SelectedListViewItemCollection(listView1);
            DialogResult d = MessageBox.Show("删除选中的 " + SelectedItem.Count + " 项?", "附件", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            String[]           source = new string[SelectedItem.Count];
            ShellFileOperation fo     = new ShellFileOperation();

            fo.Operation   = FileOperations.FO_DELETE;
            fo.OwnerWindow = this.Handle;
            fo.SourceFiles = source;

            if (d == DialogResult.Yes)
            {
                for (int i = 0; i < SelectedItem.Count; i++)
                {
                    source[i] = workpath + "\\" + SelectedItem[i].Text;
                }

                if (!fo.DoOperation())
                {
                    MessageBox.Show("删除文件过程中出错!", "附件", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                for (int i = 0; i < SelectedItem.Count;)
                {
                    listView1.Items.Remove(SelectedItem[i]);
                }

                LoadData(workpath);
            }
        }
Пример #2
0
        private void 添加_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Multiselect = true;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                ShellFileOperation fo     = new ShellFileOperation();
                String[]           source = openFileDialog1.FileNames;
                String[]           dest   = new String[openFileDialog1.FileNames.Length];

                for (int i = 0; i < openFileDialog1.FileNames.Length; i++)
                {
                    dest[i] = FileCore.NewName(workpath + "\\" + Path.GetFileName(openFileDialog1.FileNames[i]));
                }

                fo.Operation   = FileOperations.FO_COPY;
                fo.OwnerWindow = this.Handle;
                fo.SourceFiles = source;
                fo.DestFiles   = dest;

                if (!fo.DoOperation())
                {
                    MessageBox.Show("添加文件过程中出错!", "附件", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                LoadData(workpath);
            }
        }
Пример #3
0
        private bool SaveFileElevatedRights()
        {
            var tempFileName = Path.GetTempFileName();

            File.WriteAllText(tempFileName, textBoxScript.Editor.Text);

            var fo = new ShellFileOperation
            {
                OperationFlags = ShellFileOperation.ShellFileOperationFlags.FOF_SILENT |
                                 ShellFileOperation.ShellFileOperationFlags.FOF_NOCONFIRMATION |
                                 ShellFileOperation.ShellFileOperationFlags.FOFX_SHOWELEVATIONPROMPT |
                                 ShellFileOperation.ShellFileOperationFlags.FOFX_NOCOPYHOOKS |
                                 ShellFileOperation.ShellFileOperationFlags.FOFX_REQUIREELEVATION
            };

            var source = new String[1];
            var dest   = new String[1];

            source[0] = tempFileName;
            dest[0]   = m_File;

            fo.Operation   = ShellFileOperation.FileOperations.FO_MOVE;
            fo.OwnerWindow = Handle;
            fo.SourceFiles = source;
            fo.DestFiles   = dest;

            return(fo.DoOperation());
        }
Пример #4
0
        public static bool MoveFiles(List <FileCopyData> Files, bool copy, Form1 mainWindow)
        {
            // move some files
            ShellFileOperation fo = new ShellFileOperation();

            List <string> source = new List <string>();
            List <string> dest   = new List <string>();

            foreach (FileCopyData fileData in Files)
            {
                source.Add(fileData.SourceFullFilePath);
                // _fileFolder + Path.DirectorySeparatorChar  + _newFileName;
                dest.Add(fileData.DestinationFolder + Path.DirectorySeparatorChar + fileData.DestinationFileName);
            }

            if (copy)
            {
                fo.Operation = ShellFileOperation.FileOperations.FO_COPY;
            }
            else
            {
                fo.Operation = ShellFileOperation.FileOperations.FO_MOVE;
            }
            fo.OwnerWindow = mainWindow.Handle;
            fo.SourceFiles = source;
            fo.DestFiles   = dest;

            bool RetVal = fo.DoOperation();

            if (RetVal)
            {
                foreach (ShellNameMapping newName in fo.NameMappings)
                {
                    for (int i = 0; i < Files.Count; i++)
                    {
                        if (newName.DestinationPath == (Files[i].DestinationFolder + Files[i].DestinationFileName))
                        {
                            FileInfo newFile = new FileInfo(newName.RenamedDestinationPath);
                            Files[i].DestinationFileName = newFile.Name;
                        }
                    }
                }
                //MessageBox.Show("Copy Complete without errors!");
                return(true);
            }
            else
            {
                MessageBox.Show("Copy Complete with errors!");
            }

            //fo.NameMappings.Length;

            //CopyFilesDialog copyfiles = new CopyFilesDialog(Files, copy);
            //copyfiles.Show();

            return(false);
        }
Пример #5
0
        private void NavigateFiles(NavigateFileOperation operation)
        {
            if (operation == NavigateFileOperation.Next || operation == NavigateFileOperation.Previous)
            {
                TreeNode n = this.fileList.SelectedNode;
                int      i = this.fileList.Nodes.IndexOf(n);

                if (i == -1)
                {
                    i = operation == NavigateFileOperation.Next ? 0 : this.fileList.Nodes.Count - 1;
                }
                else
                {
                    i += operation == NavigateFileOperation.Next ? 1 : -1;
                }

                if (i >= 0 && i < this.fileList.Nodes.Count)
                {
                    n = this.fileList.Nodes[i];
                    this.fileList.SelectedNode = n;
                }
            }

            if (operation == NavigateFileOperation.Delete)
            {
                TreeNode n = this.fileList.SelectedNode;
                if (n != null && n.Tag is FileSystemInfo)
                {
                    ShellFileOperation fo = new ShellFileOperation();
                    int i = this.fileList.Nodes.IndexOf(n);

                    fo.Operation   = ShellFileOperation.FileOperations.FO_DELETE;
                    fo.OwnerWindow = this.Handle;
                    fo.SourceFiles = new string[] { ((FileSystemInfo)n.Tag).FullName };;

                    bool RetVal = fo.DoOperation();
                    if (RetVal)
                    {
                        // delete was successful -> update the list
                        RefreshFileList(currentDirectory, true);

                        if (i >= this.fileList.Nodes.Count)
                        {
                            i = this.fileList.Nodes.Count - 1;
                        }

                        if (i >= 0 && i < this.fileList.Nodes.Count)
                        {
                            n = this.fileList.Nodes[i];
                            this.fileList.SelectedNode = n;
                        }
                    }
                }
            }
        }
Пример #6
0
 public static bool DeleteFileSystemItemProperties(Form owner, string path)
 {
     try
     {
         var fo = new ShellFileOperation();
         fo.Operation   = ShellFileOperation.FileOperations.FO_DELETE;
         fo.OwnerWindow = owner.Handle;
         fo.SourceFiles = new string[] { path };
         return(fo.DoOperation());
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, Application.ProductName,
                         MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         return(false);
     }
 }
Пример #7
0
        public bool CopyMove(bool move)
        {
            ShellFileOperation fo = CreateFileOperation(move);
            bool ret = fo.DoOperation();

            foreach (ShellNameMapping mapping in fo.NameMappings)
            {
                foreach (KeyValuePair <string, string> pair in OldNameAndNewName)
                {
                    if (pair.Value.ToLower() == mapping.DestinationPath.ToLower())
                    {
                        OldNameAndNewName[pair.Key] = mapping.RenamedDestinationPath;
                        break;
                    }
                }
            }

            return(ret);
        }
Пример #8
0
        protected override void OnDrop(DragEventArgs e)
        {
            if (e.Data is System.Windows.DataObject && ((System.Windows.DataObject)e.Data).ContainsFileDropList() && Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                var srs = ((System.Windows.DataObject)e.Data).GetFileDropList().Cast <string>();

                path = H.GetLnk(path) ?? path;
                if (Directory.Exists(path))
                {
                    ShellFileOperation fo = new ShellFileOperation();
                    fo.SourceFiles = srs.ToArray();
                    fo.DestFiles   = dest(srs, path).ToArray();
                    fo.Operation   = ShellLib.ShellFileOperation.FileOperations.FO_MOVE;
                    fo.DoOperation();
                }
                e.Handled = true;
            }


            base.OnDrop(e);
            window.Hide();
        }
Пример #9
0
        protected override void WndProc(ref Message Msg)
        {
            if (Msg.Msg == 0x0233)// WM_DROPFILES
            {
                uint FilesCount = Win32API.DragQueryFile((int)Msg.WParam, 0xFFFFFFFF, null, 0);

                StringBuilder FileName = new StringBuilder(1024);

                ShellFileOperation fo     = new ShellFileOperation();
                String[]           source = new String[FilesCount];
                String[]           dest   = new String[FilesCount];
                for (uint i = 0; i < FilesCount; i++)
                {
                    Win32API.DragQueryFile((int)Msg.WParam, i, FileName, 1024);
                    source[i] = FileName.ToString();
                    dest[i]   = FileCore.NewName(workpath + "\\" + Path.GetFileName(FileName.ToString()));
                }
                Win32API.DragFinish((int)Msg.WParam);

                fo.Operation   = FileOperations.FO_COPY;
                fo.OwnerWindow = this.Handle;
                fo.SourceFiles = source;
                fo.DestFiles   = dest;

                if (!fo.DoOperation())
                {
                    MessageBox.Show("添加文件过程中出错!", "附件", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }



                LoadData(workpath);

                return;
            }
            base.WndProc(ref Msg);
        }
Пример #10
0
        protected override void OnDrop(DragEventArgs e)
        {
            if (e.Data is System.Windows.DataObject && ((System.Windows.DataObject)e.Data).ContainsFileDropList() && Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                var srs =((System.Windows.DataObject)e.Data).GetFileDropList().Cast<string>();

                path = H.GetLnk(path) ?? path;
                if (Directory.Exists(path))
                {
                    ShellFileOperation fo = new ShellFileOperation();
                    fo.SourceFiles = srs.ToArray();
                    fo.DestFiles = dest(srs, path).ToArray();
                    fo.Operation = ShellLib.ShellFileOperation.FileOperations.FO_MOVE;
                    fo.DoOperation();

                }
                e.Handled = true;
            }

            base.OnDrop(e);
            window.Hide();
        }
Пример #11
0
        private void imageListView1_DropFiles(object sender, DropFileEventArgs e)
        {
            if (treeView1.SelectedNode.GetType().Name == "NodeCategory")
              {
              NodeCategory nCat = (NodeCategory)treeView1.SelectedNode;
              if (nCat.IsLeaf() == false)
              {
                  MessageBox.Show("You can't drop on a category with child ");
                  e.Cancel = true;
                  return;
              }
            FChoosePhotographer choosePhotographer = new FChoosePhotographer(nodephotographer);
            if (choosePhotographer.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {

                FilenamePhotoProvider fpp = new FilenamePhotoProvider(choosePhotographer.Photographe);

                ImageListView.ImageListViewSelectedItemCollection selected = imageListView1.SelectedItems;
                String DirectoryDst = nCat.getDirectory();
                List<string> Lfile = fpp.getPossibleFilename(DirectoryDst, e.FileNames.Length);

                string[] fileDst = new String[Lfile.Count];

                int n = 0;
                foreach (String s in Lfile)
                {
                    fileDst[n] = s;
                    n++;
                }

                this.Cursor = Cursors.WaitCursor;
                ShellFileOperation sfo = new ShellFileOperation();
                sfo.Operation = ShellFileOperation.FileOperations.FO_COPY;
                sfo.OwnerWindow = this.Handle;
                sfo.SourceFiles = e.FileNames;
                sfo.DestFiles =fileDst;
                sfo.ProgressTitle = "Import...";
                sfo.DoOperation();

                toolStripProgressBarThumb.Visible = true;
                toolStripProgressBarThumb.Minimum = 0;
                toolStripProgressBarThumb.Maximum = sfo.DestFiles.Length;
                ThumbMaker tm = new ThumbMaker();

                  tm.processFiles(sfo.DestFiles, DirectoryDst + "\\miniatures\\", delegate(int f, string m)
                  {
                        if (f == -1)
                        {
                           toolStripStatusLabel1.Text = m;
                        }
                        else
                        {
                            toolStripStatusLabel1.Text = " Processing thumbnail File " + f.ToString();
                            toolStripProgressBarThumb.Value = f;
                            if (toolStripProgressBarThumb.Maximum-1 == f)
                            {
                                tabControl1.SelectedIndex = 0;
                                try
                                {
                                    PopulateListView(new DirectoryInfo(nCat.getDirectory()));
                                }
                                catch (Exception exp)
                                {
                                    MessageBox.Show("Error in category " + exp.Message);
                                }
                                FillGuiCategory(nCat);
                                //TreeNode node = (TreeNode)nodeCategory;
                                //ExpandNode(nodeCategory, node);
                                //nodeCategory.Expand();
                            }
                        }
                    });
                    this.Cursor = Cursors.Arrow;
                    toolStripProgressBarThumb.Visible = false;
                }
                else
                {
                    MessageBox.Show("Error Happen in the wizard configuration please try again ");
                }

                 }
             e.Cancel = true;
        }
Пример #12
0
        private bool DeleteFiles(ImageListView imgListView,bool iscategory=false)
        {
            ImageListView.ImageListViewSelectedItemCollection selected = imgListView.SelectedItems;
            // On multiplie par deux pour les images et miniatures.
            String[] files;
            List<String> imgFile = new List<string>();

            try
               {

              foreach (ImageListViewItem img in selected)
               {

                    imgFile.Add(img.FileName);
                    FileInfo fi = new FileInfo(img.FileName);
                    FileInfo fiMiniature = new FileInfo(DirUtil.JoinDirAndFile(fi.DirectoryName, "miniatures/") + fi.Name);
                    if (fiMiniature.Exists && iscategory)
                    {
                        imgFile.Add(DirUtil.JoinDirAndFile(fi.DirectoryName, "miniatures/") + fi.Name);
                    }
              }

              files = new string[imgFile.Count];
              for (int n = 0; n < imgFile.Count; n++)
              {
                files[n] = imgFile[n];
              }
            ShellFileOperation sfo = new ShellFileOperation();
            sfo.SourceFiles = files;
            sfo.Operation = ShellFileOperation.FileOperations.FO_DELETE;
            return sfo.DoOperation();
            }
            catch (Exception e)
                {
                    MessageBox.Show(" Error deleting \n " + e.Message);
                }
            return false;
        }
Пример #13
0
 private void DeleteDirectory(string dir)
 {
     string[] dirs = new string[1];
     dirs[0] = dir;
     ShellFileOperation sfo = new ShellFileOperation();
     sfo.SourceFiles = dirs;
     sfo.Operation = ShellFileOperation.FileOperations.FO_DELETE;
     sfo.DoOperation();
 }
Пример #14
0
        private void toolStripButtonImportPhoto_Click(object sender, EventArgs e)
        {
            FWizardImport wizard = new FWizardImport(nodephotographer,nodeCategory);
            if (wizard.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if (wizard.hasError == false)
                {
                    this.Cursor = Cursors.WaitCursor;
                    ShellFileOperation sfo = new ShellFileOperation();
                    sfo.Operation = ShellFileOperation.FileOperations.FO_COPY;
                    //sfo.OperationFlags = ShellFileOperation.ShellFileOperationFlags.FOF_SIMPLEPROGRESS;
                    sfo.OwnerWindow = this.Handle;
                    sfo.SourceFiles = wizard.ListImage;
                    sfo.DestFiles = wizard.DstImage;
                    sfo.ProgressTitle = "Import...";
                    sfo.DoOperation();

                    toolStripProgressBarThumb.Visible = true;
                    toolStripProgressBarThumb.Minimum = 0;
                    toolStripProgressBarThumb.Maximum = sfo.DestFiles.Length;
                    ThumbMaker tm = new ThumbMaker();
                    tm.processFiles(sfo.DestFiles, wizard.DirectoryDst + "\\miniatures\\", delegate(int f, string m)
                    {
                        if (f == -1)
                        {
                           toolStripStatusLabel1.Text = m;
                          //treeView1.SelectedNode = ncat;
                        }
                        else
                        {
                            toolStripStatusLabel1.Text = " Processing thumbnail File " + f.ToString();
                            toolStripProgressBarThumb.Value = f;
                            if (toolStripProgressBarThumb.Maximum-1 == f)
                            {

                                NodeCategory ncat = wizard.getSelectedCategory();
                                tabControl1.SelectedIndex = 0;
                                try
                                {
                                    PopulateListView(new DirectoryInfo(ncat.getDirectory()));
                                }
                                catch (Exception exp)
                                {
                                    MessageBox.Show("Error in category " + exp.Message);
                                }
                                FillGuiCategory(ncat);
                                //TreeNode node = (TreeNode)nodeCategory;
                                //ExpandNode(nodeCategory, node);
                                //nodeCategory.Expand();
                            }
                        }
                    });
                    this.Cursor = Cursors.Arrow;
                    toolStripProgressBarThumb.Visible = false;
                }
                else
                {
                    MessageBox.Show("Error Happen in the wizard configuration please try again ");
                }
            }
        }
Пример #15
0
        public static void Paste(string directory)
        {
            //FilenamePhotoProvider fpp = new FilenamePhotoProvider();
            string [] filedst = new String[nbFile];
            for (int n = 0; n < nbFile; n++)
            {
                char [] separator = new char[1];
                separator[0]='_';
                string [] liststr = file[n].Split(separator);
                if (liststr.Length == 2)
                {
                    FilenamePhotoProvider fpp = new FilenamePhotoProvider(liststr[0]);
                    List<String> result = fpp.getPossibleFilename(directory, 1);
                    filedst[n] = result[0];
                }
                else
                {
                    FileInfo fi = new FileInfo(file[n]);
                    filedst[n] =  DirUtil.JoinDirAndFile(directory ,fi.Name);
                }
            }

            ShellFileOperation sfo = new ShellFileOperation();
            sfo.SourceFiles = file;
            sfo.DestFiles = filedst;
            if (_copy)
            {
                sfo.Operation = ShellFileOperation.FileOperations.FO_COPY;
                sfo.ProgressTitle="Copy";
            }
            if (_cut)
            {
                sfo.Operation = ShellFileOperation.FileOperations.FO_MOVE;
                sfo.ProgressTitle = "Move";
            }
            sfo.DoOperation();
        }
Пример #16
0
        private bool SaveFileElevatedRights()
        {
            var tempFileName = Path.GetTempFileName();
            File.WriteAllText(tempFileName, textBoxScript.Editor.Text);

            var fo = new ShellFileOperation
            {
                OperationFlags = ShellFileOperation.ShellFileOperationFlags.FOF_SILENT |
                                 ShellFileOperation.ShellFileOperationFlags.FOF_NOCONFIRMATION |
                                 ShellFileOperation.ShellFileOperationFlags.FOFX_SHOWELEVATIONPROMPT |
                                 ShellFileOperation.ShellFileOperationFlags.FOFX_NOCOPYHOOKS |
                                 ShellFileOperation.ShellFileOperationFlags.FOFX_REQUIREELEVATION
            };

            var source = new string[1];
            var dest = new string[1];

            source[0] = tempFileName;
            dest[0] = m_File;

            fo.Operation = ShellFileOperation.FileOperations.FO_MOVE;
            fo.OwnerWindow = Handle;
            fo.SourceFiles = source;
            fo.DestFiles = dest;

            return fo.DoOperation();
        }