【橙子】C#Winform--WinRar解压

《4.0v意世界–WinRar解压》

  • (采用winform平台,采用c#语言,winform项目下载即可使用)
  • (这个就有点来头了,首先使用的winrar解压操作,还有treeview和listview联合操作做了一个树状磁盘目录)
  • (最近打算去弄个自己的博客,希望支持)
  • (有人说做这个有什么用?主要他能实现自动化操作,我可以设置当你打开这个软件的时候,自动进行安装,相当于自动更新游戏的傻瓜操作)
    效果图如下:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    核心代码:

解压操作:

 public static string ExistsWinRar()
            {
                string result = string.Empty;

                string key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";
                RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(key);
                if (registryKey != null)
                {
                    result = registryKey.GetValue("").ToString();
                }
                registryKey.Close();

                return result;
          
        }

        public static void UnRAR(string rarFilePath, string unrarDestPath)
        {
            string rarexe = ExistsWinRar();
            if (String.IsNullOrEmpty(rarexe))
            {
                throw new Exception("未安装WinRAR程序。");
            }
            try
            {
                //组合出需要shell的完整格式  
                string shellArguments = string.Format("x -o+ \"{0}\" \"{1}\\\"", rarFilePath, unrarDestPath);

                //用Process调用  
                using (Process unrar = new Process())
                {
                    ProcessStartInfo startinfo = new ProcessStartInfo();
                    startinfo.FileName = rarexe;
                    startinfo.Arguments = shellArguments;               //设置命令参数  
                    startinfo.WindowStyle = ProcessWindowStyle.Hidden;  //隐藏 WinRAR 窗口  

                    unrar.StartInfo = startinfo;
                    unrar.Start();
                    unrar.WaitForExit();//等待解压完成  

                    unrar.Close();
                }
            }
            catch
            {
                throw;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string rarFilePath = textBox1.Text;
            string unrarDestPath = textBox2.Text;
            try
            {
                UnRAR(rarFilePath, unrarDestPath);
                MessageBox.Show("成功!");
            }
            catch
            {
                MessageBox.Show("错误!");
            };
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form2 p =new Form2();
            p.ShowDialog();
        }

        private void cheak_Tick(object sender, EventArgs e)
        {
            textBox1.Text = data.data_t;
            textBox2.Text = data.data_f;
        }
    }

磁盘管理操作:

        private void Form2_Load(object sender, EventArgs e)
        {
            TreeNode rootNode = new TreeNode("我的电脑");
            treeView1.Nodes.Add(rootNode);

        }

        private void ListViewShow(TreeNode NodeDir)
        {
            listViewFile.Clear();
            try
            {
                if (NodeDir.Parent == null)
                {
                    foreach (string DrvName in Directory.GetLogicalDrives())
                    {
                        ListViewItem ItemList = new ListViewItem(DrvName);
                        listViewFile.Items.Add(ItemList);
                    }
                }
                else
                {
                    foreach (string dirName in Directory.GetDirectories((string)NodeDir.Tag))
                    {
                        ListViewItem dirItem = new ListViewItem(dirName);
                        listViewFile.Items.Add(dirItem);
                    }
                    foreach (string fileName in Directory.GetFiles((string)NodeDir.Tag))
                    {
                        ListViewItem fileItem = new ListViewItem(fileName);
                        listViewFile.Items.Add(fileItem);
                    }
                }
            }
            catch { }
        }
        private void TreeViewShow(TreeNode selectNode)
        {
            try
            {
                if (selectNode.Nodes.Count == 0)
                {
                    if (selectNode.Parent == null)
                    {
                        foreach (string drvName in Directory.GetLogicalDrives())
                        {
                            TreeNode drvNode = new TreeNode(drvName);
                            drvNode.Tag = drvName;
                            selectNode.Nodes.Add(drvNode);
                        }
                    }
                    else
                    {
                        foreach (string dirName in Directory.GetDirectories((string)selectNode.Tag))
                        {
                            TreeNode dirNode = new TreeNode(dirName);
                            dirNode.Tag = dirName;
                            selectNode.Nodes.Add(dirNode);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 

        private void listViewFile_SelectedIndexChanged(object sender, EventArgs e)
        {
            //int selectCount = listViewFile.SelectedItems.Count;
            if (listViewFile.SelectedItems.Count == 0)
                return;
            data.data_t = listViewFile.SelectedItems[0].Text;
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeViewShow(e.Node);
            ListViewShow(e.Node);
            if (treeView1.SelectedNode.Nodes.Count == 0)
                return;
            data.data_f = treeView1.SelectedNode.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }

最后:
我和很多人一样都是刚入大门,什么都不懂的小白,希望能互助互学,取长补短。
有什么不懂的问我,我很乐意回答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值