C#调用Rar文件及获取Rar返回值的方法

本文实例讲述了C#调用Rar文件及获取Rar返回值的方法。分享给大家供大家参考。具体如下:

该程序适用于C#调用。
所需的Rar.exe可从WinRar官网下载控制台版。

按钮OK点击事件:

System.Diagnostics.Process process;
private void btnRAR_Click(object sender, EventArgs e)
{
 if (System.IO.File.Exists("Rar.exe"))
 {
  try
  {
   process = new System.Diagnostics.Process();
   process.StartInfo.FileName = "Rar.exe";
   process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
   process.EnableRaisingEvents = true;
   //m<0..5>  设置压缩级别(0-存储...3-默认...5-最大)
   //rar a -m5 -ag[yyyy年mm月dd日_hh点mm分-ss] MyLuoLuo
   process.StartInfo.Arguments = string.Format(@"a -m{0} -ag[yyyy年mm月dd日_hh点mm分-ss] {1}\\MyLuoLuo.rar {2}", this.SaveRank.ToString(),this.FileName,this.RarPath); //@"a -m5 -ag[yyyy年mm月dd日_hh点mm分-ss] MyLuoLuo.rar D:\Txt";
   process.Exited += new EventHandler(RarStop);
   process.Start();
  }
  catch (Exception ex)
  {
   MessageBox.ShowError("发生错误!错误信息:\n" + ex.Message);
  }
 }
}

进程退出时判断返回值:

private void RarStop(object sender, System.EventArgs e)
{
 switch (process.ExitCode)
 {
  case 0:
   MessageBox.ShowInformation("压缩成功!");
   break;
  case 1:
   MessageBox.ShowInformation("有错误但没有发生致命错误!");
   break;
  case 2:
   MessageBox.ShowError("发生一个致命错误!");
   break;
  case 3:
   MessageBox.ShowError("解压缩时发生一个 CRC 错误!");
   break;
  case 4:
   MessageBox.ShowError("试图修改先前使用 'k' 命令锁定的压缩文件!");
   break;
  case 5:
   MessageBox.ShowError("写入磁盘错误!");
   break;
  case 6:
   MessageBox.ShowError("打开文件错误!");
   break;
  case 7:
   MessageBox.ShowError("命令行选项错误!");
   break;
  case 8:
   MessageBox.ShowError("没有足够的内存进行操作!");
   break;
  case 9:
   MessageBox.ShowError("创建文件错误!");
   break;
  case 255:
   MessageBox.ShowError("用户中断操作");
   break;
  default:
   MessageBox.ShowError("未知错误!");
   break;
 }
}

希望本文所述对大家的C#程序设计有所帮助。

时间: 2015-07-23

c#获取存储过程返回值示例分享

存储过程: 复制代码 代码如下: CREATE  PROCEDURE [dbo].[Proc_GetInfo] @ywdm varchar(10), @value varchar(20) output AS begin set @value=Select top 1 createt From table Where ywdm=@ywdm end C#获取存储过程返回值: 复制代码 代码如下: var db = DatabaseFactory.CreateDatabase(); var cmd =

C#获取存储过程返回值和输出参数值的方法

1.获取Return返回值 复制代码 代码如下: //存储过程//Create PROCEDURE MYSQL//     @a int,//     @b int//AS//     return @a + @b//GOSqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());conn.Open();SqlCommand MyC

C#中ExecuteNonQuery()返回值注意点分析

本文实例讲述了C#中ExecuteNonQuery()返回值注意点.对于C#数据库程序设计有一定的借鉴价值.分享给大家供大家参考之用.具体分析如下: 首先,在查询某个表中是否有数据的时候,我们通常用ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解,回头查了下资料,如下显示: SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影

C#实现.net页面之间传值传参方法汇总

本文实例总结了C#实现.net页面之间传值传参方法.分享给大家供大家参考.具体实现方法分析如下: 一.QueryString传值 一般来说,QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法了.如下面实例所示: 复制代码 代码如下: private void Button1_Click(object sender, System.EventA

C#实现向多线程传参的三种方式实例分析

本文实例讲述了C#实现向多线程传参的三种方式.分享给大家供大家参考,具体如下: 从<C#高级编程>了解到给线程传递参数有两种方式,一种方式是使用带ParameterizedThreadStart委托参数的Thread构造函数,另一种方式是创建一个自定义类,把线程的方法定义为实例的方法,这样就可以初始化实例的数据,之后启动线程. 方式一:使用ParameterizedThreadStart委托 如果使用了ParameterizedThreadStart委托,线程的入口必须有一个object类型的

c# List find()方法返回值的问题说明(返回结果为对象的指针)

C#中List<T>中泛型T如果是一个对象的话,则利用Find函数返回的将是这个对象的指针,对其返回对象的属性进行操作,也会影响list中相应元素对象的值.验证如下:1.新建一个Class1类,其含有两个姓名和分数两个属性: 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px">    public class Class1    {        public string name{ get; set; }        publ

C#调用存储过程详解(带返回值、参数输入输出等)

本文实例讲述了C#调用存储过程的方法.分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=studentname FROM student WHERE studentid=@studentid if @@Error<>0 RETURN -1 else RETURN 0 E

C#打开php链接传参然后接收返回值的关键代码

php代码 一.php <?php header("Content-Type:text/html;charset=UTF-8"); $u=$_POST['zdupdate']; $p=$_POST['pid']; $a=$_POST["afid"]; $d=$_POST["dtime"]; require('../db/conn.php');//打开文件 $sql_expire="insert into `m-haibook`.t

微信小程序链接传参并跳转新页面

像传统的传参一样,只是在微信里面的标签不一样而已,navigator标签的文档说明: https://mp.weixin.qq.com/debug/wxadoc/dev/component/navigator.html?t=20161122 下面是传递参数并展示新页面的一个简单栗子: 这是index.wxml代码: <navigator class="bury-wrapper wx-li" url="../detail/detail?id={{name.id}}&quo

jsp传参 servlet接收中文乱码问题的解决方法

在公司实习了8个月,一直都是做android和h5的,但是发现做程序连一点服务都不会该怎么办,所以最近开始学起了java,不知道是不是因为框架学多了,现在看起springmvc框架比以前看起来简单太多了,这里我是准备从hibernate开始学习,毕竟数据是根本嘛,首先我用的是hibernate+servlet,但是在jsp页面传参到servlet的时候中文一直乱码,我尝试了好多方法,最后还是解决了. 第一,首先看清项目的编码,jsp页面的编码 第二,修改tomcat 下面的server.xml文

.NET调用控制台下生成的exe文件,传参及获取返回参数的思路及代码

最近客户要求把一个树型目录导出成文件夹套文件夹的结构,并提供下载功能,刚开始感觉功能比较容易实现就在最短的时间把基本功能搞定,当发布到服务器上之后发现直接在本应用程序中导出目录(下带ntko文档及附件)再进行压缩,程序直接卡死了!后来就想到了要做一window服务,只是客户给的时间太短,没办法先写一控制台程序生成一个exe文件,然后再调用这个exe文件,这样就可以缓解本程序压力了! 下面写一个测试项目 在调用exe端传过去一个要压缩的文件夹的路径,然后在控制台下获取该路径进行压缩,压缩完成之后返

SpringBoot异步调用方法并接收返回值

项目中肯定会遇到异步调用其他方法的场景,比如有个计算过程,需要计算很多个指标的值,但是每个指标计算的效率快慢不同,如果采用同步执行的方式,运行这一个过程的时间是计算所有指标的时间之和.比如: 方法A:计算指标x,指标y,指标z的值,其中计算指标x需要1s,计算指标y需要2s,指标z需要3s.最终执行完方法A就是5s. 现在用异步的方式优化一下 方法A异步调用方法B,方法C,方法D,方法B,方法C,方法D分别计算指标x,指标y,指标z的值,那么最终执行完方法A的时间则是3s. 步骤1:配置线程池,

浅析vue-router jquery和params传参(接收参数)$router $route的区别

今天做项目时踩到了vue-router传参的坑(jquery和params),所以决定总结一下二者的区别. 1.jquery方式传参和接收参数 传参: this.$router.push({ path:'/xxx' query:{ id:id } }) 接收参数: this.$route.query.id 注意:传参是this.$router,接收参数是this.$route,这里千万要看清了!!! this.$router 和this.$route有何区别? 在控制台打印两者可以很明显的看出两

详解vue-router传参的两种方式

Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数.查询.通配符 基于 Vue.js 过渡系统的视图过渡效果 细粒度的导航控制 带有自动激活的 CSS class 的链接 HTML5 历史模式或 hash 模式,在 IE9 中自动降级 自定义的滚动条行为 vue-router传参两种方式:params和query params.query是什么? p

使用layui的router来进行传参的实现方法

如果我们需要通过链接传参的话,我们需要使用使用url+/#/参数 如下面代码我要传参id,edit/#/id=1就可以传参成功了 $(document).on('click', '#edit', function(data) { var id = $(this).attr('data-id'); var url = "edit/#/id=" + id; // console.log("edit/"+id); dialog.addOrEdit('编辑', url, '

Sql Server 存储过程调用存储过程接收输出参数返回值

创建存储过程: ALTER PROCEDURE [dbo].[GetCustomers] (@rowcount INT OUTPUT) AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ,[City] ,[Region] ,[PostalCode] ,[Country] ,[Phone] ,[Fax] FROM [Northwind].[dbo].[Customers] SET @row

vue跳转方式(打开新页面)及传参操作示例

本文实例讲述了vue跳转方式(打开新页面)及传参操作.分享给大家供大家参考,具体如下: 1. router-link跳转 // 直接写上跳转的地址 <router-link to="/detail/one"> <span class="spanfour" >link跳转</span> </router-link> // 添加参数 <router-link :to="{path:'/detail/two'