找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30805|回复: 9

C#编写第三方控制台程序教程(一)。其实一切并不难。

[复制链接]
发表于 2012-8-29 21:20:57 | 显示全部楼层 |阅读模式
很久没有来这里了。想起来以前为大家编写第三方程序,是几年前的事情了。后来也没有时间写了。
授人与鱼不如有人与渔。这回给大家来个教程,抛砖引玉。

C#已经是.net必不可少的组成部分。那么开发控制台程序,也非常简单。但是一个visual studio太过庞大,安装也比较麻烦,可能阻碍了很多想开发第三方的朋友。所以我选用另外一个更小巧的c#编辑器:SharpDevelop。
官方下载地址:http://www.icsharpcode.net/OpenSource/SD/Download/

SharpDevelop 是非常小巧的,总共才19MB,但功能齐全。不过我认为,大家想真正写程序,还是vs比较好。这里只是给爱好者开个头。
安装比较简单。我这里不再阐述。有朋友问搜不到汉化版怎么办?不用担心,SharpDevelop本身就有中文版,不需要别人汉化。呵呵。

更改为中文:
Tools菜单中Options选项,打开,就看到熟悉的中国国旗,点一下立刻变为中文。

从这里开始,我们做一个简单的第三方程序吧!
新建工程:ctrl + shift + n

选择C#--Windows应用程序--控制台应用程序,输入自己想要的名称即可。

此时大家看到一些代码,这是已经给我们创建好的基本格式。可以按F5来测试一下。
出现了Hello World!按任意键退出。

下面,我们自己写一些代码,边熟悉C#语法,边做一个带参数的控制台模版。

先分析SharpDevelop给我们创建好的代码:


  1. namespace myProgarm  -------这是命名空间。我们不需要考虑
  2. {
  3.         class Program ------主类,也不需要更改
  4.         {
  5.                 public static void Main(string[] args)   ---public是全局修定符,static是静态修定符,void是无返回值,Main是默认的初始方法名称,括号里是参数。这些我们都不需要修改,了解就好了。
  6.                 {
  7.                         Console.WriteLine("Hello World!"); -- 在控制台输出 Hello World!的文本。
  8.                        
  9.                         // TODO: Implement Functionality Here ---带有“//”的是注解行,不会运行。
  10.                        
  11.                         Console.Write("Press any key to continue . . . ");--输出文本,并等待。
  12.                         Console.ReadKey(true); --按键后继续。
  13.                 }
  14.         }
  15. }
复制代码
下面,我们修改一下Main方法(也叫函数),增加判断参数的功能:

  1.                 public static void Main(string[] args)
  2.                 {
  3.                         //for循环语句,括号中参数如下:int i = 0 声明一个整数型变量i,i可以自定义名称。i<args.Length 表明如果i小于args的内容“个数”时,args是Main的参数,类型是“字符型数组”所以有长度属性。i++ 代表 i+1,这三句之间用“分号”隔开。这样可以遍历参数数组。
  4.                         for(int i=0;i<args.Length;i++)
  5.                         {
  6.                               //switch是选择语句,参数为要判断什么。args[i]代表的是args中第i个内容。i是通过for循环不断变化的,所以,就不断的取args中不同的内容。
  7.                                 switch(args[i])
  8.                                 {
  9.                                        //如果是“/a”,就运行a方法。在下面可以看到我们声明的方法a;
  10.                                         case "/a":
  11.                                                 a(args[i+1]);
  12.                                                 //必须要加break来跳出选择,否则会全部运行一遍。
  13.                                                 break;
  14.                                           //如果是/?,就运行help方法。
  15.                                         case "/?":
  16.                                                 help();
  17.                                                 break;
  18.                                                
  19.                                 }
  20.                         }
  21.                 }
  22.                  //自定义方法 a,(string e)表示声明一个字符串类型的变量,名字是e
  23.                 private static void a(string e)
  24.                 {
  25.                         //在控制台输出
  26.                         Console.WriteLine("这是参数a:"+e);
  27.                 }
  28.                 //自定义方法help
  29.                 private static void help()
  30.                 {
  31.                        //这里要注意的是“\n”,这是换行符。
  32.                         Console.WriteLine("这是参数help:\n/a [参数] 输出参数;");
  33.                 }
复制代码
F5运行,发现一闪而过。没问题。看看我们的成果吧:
在你保存项目的文件夹中,找到bin\Debug。这里有个EXE文件。这就是我们的成果了 。
也可以点击按钮(如图),可以看到bin\Debug文件夹,右键菜单中可以直接打开文件夹。


下面是我写好的sharpDevelop工程。大家可以参考一下。
链接: https://pan.baidu.com/s/1PnB3NjI-dwDO7usfePPqnw?pwd=jvtv

有时间我会继续写教程的。
发表于 2012-8-30 00:28:12 | 显示全部楼层
转移到第三方开发版块吧
我对.net开发第三方的态度目前是,没有类库运行不了导致实用性大大降低
而且启动速度所限不能做高频率被调用的第三方
发表于 2012-8-30 00:38:44 | 显示全部楼层
有空写个用asm的教程呗
发表于 2012-8-31 21:30:16 | 显示全部楼层
不知道现在.NET的装机率是多少,有10%吗?
 楼主| 发表于 2012-9-1 13:05:07 | 显示全部楼层
回复 4# Demon
win7 已经预安装 .net3.5
xp 虽然没有预置,但是现在没有.net几乎什么都做不了。玩游戏、一些应用、甚至一些网站都无法浏览。
.net安装我认为绝对超过95%
发表于 2012-10-12 06:45:35 | 显示全部楼层
回复 5# xinje
.net带来的是开发上的便利,但是对效果并没有什么特长
简单的来说,开发大工程.net舒服很多,本人也很喜欢上次在.net下开发的经验
但是本质上只是对API的封装,.net库能做的,用API也能做
而且相比携带巨大的库,纯API开发出来的优势也是明显的
.net带来的开发者的便利,对于大项目来说无可比拟
但是对于第三方这样的小东西,把LZ编译出来的exe大小和执行速度同VC++开发出来的比较一下吧
并非说.net不好,只是各有所长,第三方等开发或许.net并不在优
当然仍然非常支持这系列的文章
PS 其实我的第一个第三方是用C#开发的!C++是后来才上手的
 楼主| 发表于 2012-10-15 00:06:58 | 显示全部楼层
回复 7# defanive
我只是觉得C#更简单一些,对于论坛里,很多人没有这方面的经验,而c#很适合初学者,仅此而已。
我也想写c++的教程,不过不是一天两天能说明白的。
我曾经在论坛发布第三方全部都是vc6的。但是就算公布源码,估计初学者很难滤清头绪,而C#我想有10天就差不多了。
发表于 2013-2-25 17:01:38 | 显示全部楼层
学习了,利用地三方,比较简单
发表于 2013-11-12 22:59:27 | 显示全部楼层
英文版的看不懂呀 楼主 我英语没过呢
发表于 2015-11-28 15:47:40 | 显示全部楼层
收了慢慢学
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:42 , Processed in 0.020515 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表