《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();
}
}
最后:
我和很多人一样都是刚入大门,什么都不懂的小白,希望能互助互学,取长补短。
有什么不懂的问我,我很乐意回答。