使用WinRAR的C#程序

使用WinRAR的C#程序,c#,C#,我想设计一个c程序,它可以运行第三个exe应用程序,比如WinRAR。程序将浏览文件,当用户单击按钮时,创建存档的过程将开始 我知道使用System.Diagnostics.Process.Start方法可以执行.exe文件。例如,Process.Start(@“C:\path\to\file.zip”) Process.Start(@"C:\path\to\file.zip"); GetFile(“文件名”,“打开winrar执行文件”)我需要这样的东西。我想将文件名传递给第三个应用程序,而不

我想设计一个c程序,它可以运行第三个exe应用程序,比如WinRAR。程序将浏览文件,当用户单击按钮时,创建存档的过程将开始

我知道使用System.Diagnostics.Process.Start方法可以执行.exe文件。例如,
Process.Start(@“C:\path\to\file.zip”)

Process.Start(@"C:\path\to\file.zip");
GetFile(“文件名”,“打开winrar执行文件”)我需要这样的东西。我想将文件名传递给第三个应用程序,而不需要打开winrar。可能吗?我该怎么开始?任何参考/指导/解决方案都非常感谢

多谢各位

//已更新

这是打开WinRAR.exe程序的代码,否则会出现错误消息。我将其放入按钮中,单击并使用browse从txtDest.text接受文件。因此,从这里开始,我不想打开文件,而是想直接压缩。我试图更改“RAR.exe”或“unrr.exe”,但没有成功。是吗?

多谢各位。
 ProcessStartInfo startInfo = new ProcessStartInfo("WinRAR.exe");
 startInfo.WindowStyle = ProcessWindowStyle.Maximized;
 startInfo.Arguments = txtDest.Text;
 try
 {
   // Start the process with the info we specified.
   using (Process exeProcess = Process.Start(startInfo))
    {
        exeProcess.WaitForExit();
    }
  }
  catch
    {
        MessageBox.Show("Error Open");
    }
  }
ProcessStartInfo startInfo=newprocessstartinfo(“WinRAR.exe”);
startInfo.WindowStyle=ProcessWindowStyle.Maximized;
startInfo.Arguments=txtDest.Text;
尝试
{
//使用我们指定的信息启动流程。
使用(Process exeProcess=Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
抓住
{
MessageBox.Show(“错误打开”);
}
}

如果WinRar几乎肯定接受命令行参数,这是可能的。
这是一个很好的例子,说明了如何做这类事情,我认为第4个最接近你想要的。这里有一些很好的例子,我只想在这里重复一下。您可能对捕获您执行的程序的输出感兴趣,因此在这种情况下,您需要设置

psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
然后,您可以从结果“”对象中读取它们:


WinRAR安装带来了控制台版本“RAR.EXE”和“unar.EXE”。通过命令行完全控制As控制台应用程序。您可以通过准备命令行和启动进程来集成它,可以选择隐藏,这样用户就只能看到您的程序

用法:

RAR.EXE a "C:\file to create.rar" "C:\Documents\file to include.jpg"         
"C:\Photos\my picture.jpg" "C:\curriculum.doc" [... as many files you want]

我相信有一个“rarLib”的地方可以更专业地获取它。

为此,您可能想使用unar.dll,它是由制作Winrar的Rarlab分发的库。它包含作为COM接口公开的WinRAR的所有功能。我最近在一个项目中使用了它,它非常好,公开了打开和浏览档案以及压缩和解压缩的方法

向下滚动至“UNRR.dll UNRR Windows软件开发人员动态库”

它附带了一组非常好的示例,包括浏览归档文件和API文档

这个怎么样:

是的,我在这里提出了一个完全死板的问题,但我还没有看到任何人给出你想要的确切答案(直到20分钟前我也这么想),所以让我把2和2放在一起:

命令行用法:
rar.exe a{}

通过在名称周围加引号,可以生成更复杂的名称,例如包含空格的名称。 因此,您可能需要的程序是:

string targetArchiveName = "archive.rar",
targetFile = "testFile.txt";
ProcessStartInfo startInfo = new ProcessStartInfo("WinRAR.exe");
startInfo.WindowStyle = ProcessWindowStyle.Maximized;
startInfo.Arguments = string.Format("a \"{0}\" \"{1}\"",
                      targetArchiveName, targetFile);
try
{
  // Start the process with the info we specified.
  using (Process exeProcess = Process.Start(startInfo))
  {
    exeProcess.WaitForExit();
  }
}
catch
{
  {
    MessageBox.Show("Error Open");
  }
}

你能把你的问题说得更清楚些吗?您说您想学习运行第三方应用程序,如WinRAR,然后说您想将文件名传递给第三方应用程序*而无需打开*WinRAR.needs title change。可能是“如何将参数传递给Process.Start”嗨..我确实下载了这些文件,但不确定如何使用!能告诉我下一步该做什么吗?这里显然没有压缩方法,只有解压缩嗨,请查看我的代码。。我确实把“RAR.EXE”和“unrr.EXE”放在了“WinRAR.EXE”上,但什么也没发生。这就是你的意思吗?我理解错了吗?请解释更多!!感谢这是一个优秀且易于使用的图书馆。不过,你必须仔细研究一下这些例子。我使用的代码是:rarchive=rarchive.Open(logFileName);rarchive.extractodirectory(logFileName,logHomeFolder);
string targetArchiveName = "archive.rar",
targetFile = "testFile.txt";
ProcessStartInfo startInfo = new ProcessStartInfo("WinRAR.exe");
startInfo.WindowStyle = ProcessWindowStyle.Maximized;
startInfo.Arguments = string.Format("a \"{0}\" \"{1}\"",
                      targetArchiveName, targetFile);
try
{
  // Start the process with the info we specified.
  using (Process exeProcess = Process.Start(startInfo))
  {
    exeProcess.WaitForExit();
  }
}
catch
{
  {
    MessageBox.Show("Error Open");
  }
}