コード例 #1
0
ファイル: MACHelper.cs プロジェクト: langhuihui/dnf_autologon
        public void no()
        {
            Folder networkConnectionsFolder = GetNetworkConnectionsFolder();

            if (networkConnectionsFolder == null)
            {
                Console.WriteLine("Network connections folder not found.");
                return;
            }
            FolderItem2 networkConnection = GetNetworkConnection(networkConnectionsFolder, string.Empty);

            if (networkConnection == null)
            {
                Console.WriteLine("Network connection not found.");
                return;
            }
            FolderItemVerb verb;

            try
            {
                IsNetworkConnectionEnabled(networkConnection, out verb);
                verb.DoIt();
                Thread.Sleep(1000);
                IsNetworkConnectionEnabled(networkConnection, out verb);
                verb.DoIt();
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #2
0
        public static long portable_file_size(FolderItem2 fi)
        {
            try {
                var sz = (long)fi.ExtendedProperty("size");
                return(sz);
            } catch {
            }
            try {
                // this will return something like, "3.34 KB" or so
                var size_str = (fi.Parent as Folder).GetDetailsOf(fi, 2).ToLower();

                var multiply_by = 1;
                if (size_str.EndsWith("kb"))
                {
                    multiply_by = 1024;
                    size_str    = size_str.Substring(0, size_str.Length - 2);
                }
                else if (size_str.EndsWith("mb"))
                {
                    multiply_by = 1024 * 1024;
                    size_str    = size_str.Substring(0, size_str.Length - 2);
                }
                size_str = size_str.Trim();

                double size_double = 0;
                double.TryParse(size_str, out size_double);
                return((long)(size_double * multiply_by));
            } catch {
                return(-1);
            }
        }
コード例 #3
0
 public FileProperties(Folder folder, FolderItem2 item, bool UseRelativePaths = false)
 {
     this.folder           = folder;
     this.item             = item;
     this.UseRelativePaths = UseRelativePaths;
     if (!FilePropertiesMetadata.Initialized)
     {
         FilePropertiesMetadata.Initialize(folder);
     }
 }
コード例 #4
0
ファイル: MACHelper.cs プロジェクト: langhuihui/dnf_autologon
        /// <summary>
        /// Gets whether or not the network connection is enabled and the command to enable/disable it.
        /// </summary>
        /// <param name="networkConnection">The network connection to check.</param>
        /// <param name="enableDisableVerb">On return, receives the verb used to enable or disable the connection.</param>
        /// <returns>True if the connection is enabled, false if it is disabled.</returns>
        static bool IsNetworkConnectionEnabled(FolderItem2 networkConnection, out FolderItemVerb enableDisableVerb)
        {
            var verbs = networkConnection.Verbs();

            foreach (FolderItemVerb verb in verbs)
            {
                if (verb.Name == "启用(&A)")
                {
                    enableDisableVerb = verb;
                    return(false);
                }
                if (verb.Name != "停用(&B)")
                {
                    continue;
                }
                enableDisableVerb = verb;
                return(true);
            }
            throw new ArgumentException("No enable or disable verb found.");
        }
コード例 #5
0
        public override void RequestSubDirs(TreeViewFolderBrowserHelper helper, TreeNodePath parent,
                                            TreeViewCancelEventArgs e)
        {
            if (!parent.IsSpecialFolder)
            {
                return;
            }
            //
            FolderItem2 folderItem = ((FolderItem2)parent.Tag);

            //
            if (_shell.Shell.NameSpace(ShellSpecialFolderConstants.ssfDRIVES).Title == folderItem.Name)
            {
                FillMyComputer(folderItem, parent.Nodes, helper);
            }
            else
            {
                List <TreeNodePath> nodes = new List <TreeNodePath>();
                foreach (FolderItem2 fi in ((Folder2)folderItem.GetFolder).Items())
                {
                    if (!_showAllShellObjects && !fi.IsFileSystem || !fi.IsFolder)
                    {
                        continue;
                    }
                    //
                    TreeNodePath node = CreateTreeNode(helper, fi.Name, fi.Path, IsFolderWithChilds(fi), false, true);
                    node.Tag = fi;
                    nodes.Add(node);
                }

                // Sort the Directories, as Samba might return unsorted
                TreeNodePath[] nodesArray = nodes.ToArray();
                Array.Sort(nodesArray,
                           new Comparison <TreeNodePath>(
                               delegate(TreeNodePath p1, TreeNodePath p2) { return(string.Compare(p1.Text, p2.Text)); }));

                parent.Nodes.AddRange(nodesArray);
            }
        }
コード例 #6
0
        // note: this can only happen synchronously - otherwise, we'd end up deleting something from HDD before it was fully moved from the HDD
        public static void delete_sync_portable_file(FolderItem2 fi)
        {
            Debug.Assert(!fi.IsFolder);
            // https://msdn.microsoft.com/en-us/library/windows/desktop/bb787874(v=vs.85).aspx
            var move_options = 4 | 16 | 512 | 1024;

            try {
                var temp        = win_util.temporary_root_dir();
                var temp_folder = win_util.get_shell32_folder(temp);
                var file_name   = fi.Name;
                var size        = portable_util.portable_file_size(fi);
                temp_folder.MoveHere(fi, move_options);

                var name = temp + "\\" + file_name;
                wait_for_win_copy_complete(size, temp + "\\" + file_name);
                File.Delete(name);
            } catch {
                // backup - this will prompt a confirmation dialog
                // googled it quite a bit - there's no way to disable it
                fi.InvokeVerb("delete");
            }
        }
コード例 #7
0
        /// <summary>
        /// Read Sub Folders of the selected Parent Node
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="parent"></param>
        public virtual void RequestSubDirs(TreeViewHelper helper, TreeItem parent)
        {
            log.Trace(">>>");
            helper.TreeView.Cursor = Cursors.Wait;

            FolderItem2 folderItem = ((FolderItem2)parent.Item);

            log.Trace($"Requesting Subfolders of {folderItem.Name}");

            if (_shell.Shell.NameSpace(ShellSpecialFolderConstants.ssfDRIVES).Title == folderItem.Name)
            {
                FillMyComputer(folderItem, parent.Nodes, helper);
            }
            else
            {
                var nodes = new List <TreeItem>();
                foreach (FolderItem2 fi in ((Folder2)folderItem.GetFolder).Items())
                {
                    if (!_showAllShellObjects && !fi.IsFileSystem || !fi.IsFolder)
                    {
                        continue;
                    }
                    var node = CreateTreeNode(helper, fi.Name, fi.Path, false, fi);
                    nodes.Add(node);
                }

                // Sort the Directories, as Samba might return unsorted
                var nodesArray = nodes.ToArray();
                Array.Sort(nodesArray,
                           (p1, p2) => string.CompareOrdinal(p1.Name, p2.Name));

                parent.Nodes.AddRange(nodesArray);
                helper.TreeView.Cursor = Cursors.Arrow;
            }
            log.Trace("<<<");
        }
コード例 #8
0
 public portable_file(portable_drive drive, FolderItem2 fi)
 {
     drive_ = drive;
     fi_    = fi;
     Debug.Assert(!fi.IsFolder);
 }
コード例 #9
0
 public static DateTime GetDisplacedDate(FolderItem2 item)
 {
     return((DateTime)item.ExtendedProperty(PID_DISPLACED_DATE));
 }
コード例 #10
0
        public void PrintOne(int index)
        {
            int size = _objFolder.Items().Count;
            if(index >= size)
                return;

            var tempItem2 = new FolderItem2[size];
            //Shell32.FolderItem2 tempItem = _objFolder.ParseName()

            //tempItem2 = _objFolder.Items();

            int j = 0;
            foreach (Shell32.FolderItem2 tempItem in _objFolder.Items())
            {
                tempItem2[j] = tempItem;
                j++;
            }

            //foreach (Shell32.FolderItem2 item in _objFolder.Items())
            {
                for (int i = 0; i < _arrHeaders.Count; i++)
                {
                    Console.WriteLine("{0}\t{1}: {2}", index, _arrHeaders[i], _objFolder.GetDetailsOf(tempItem2[index],i));
                }
            }
        }
コード例 #11
0
 public PortableFile(PortableDrive drive, FolderItem2 fi)
 {
     drive_ = drive;
     fi_    = fi;
     //Debug.Assert(!fi.IsFolder);
 }