批处理之家's Archiver

xinje 发表于 2012-8-29 21:20

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

很久没有来这里了。想起来以前为大家编写第三方程序,是几年前的事情了。后来也没有时间写了。
授人与鱼不如有人与渔。这回给大家来个教程,抛砖引玉。

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

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

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

从这里开始,我们做一个简单的第三方程序吧!
新建工程:ctrl + shift + n
[attach]5616[/attach]
选择C#--Windows应用程序--控制台应用程序,输入自己想要的名称即可。
[attach]5617[/attach]
此时大家看到一些代码,这是已经给我们创建好的基本格式。可以按F5来测试一下。
出现了Hello World!按任意键退出。

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

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

namespace myProgarm  -------这是命名空间。我们不需要考虑
{
        class Program ------主类,也不需要更改
        {
                public static void Main(string[] args)   ---public是全局修定符,static是静态修定符,void是无返回值,Main是默认的初始方法名称,括号里是参数。这些我们都不需要修改,了解就好了。
                {
                        Console.WriteLine("Hello World!"); -- 在控制台输出 Hello World!的文本。
                       
                        // TODO: Implement Functionality Here ---带有“//”的是注解行,不会运行。
                       
                        Console.Write("Press any key to continue . . . ");--输出文本,并等待。
                        Console.ReadKey(true); --按键后继续。
                }
        }
}[/code]下面,我们修改一下Main方法(也叫函数),增加判断参数的功能:[code]
                public static void Main(string[] args)
                {
                        //for循环语句,括号中参数如下:int i = 0 声明一个整数型变量i,i可以自定义名称。i<args.Length 表明如果i小于args的内容“个数”时,args是Main的参数,类型是“字符型数组”所以有长度属性。i++ 代表 i+1,这三句之间用“分号”隔开。这样可以遍历参数数组。
                        for(int i=0;i<args.Length;i++)
                        {
                              //switch是选择语句,参数为要判断什么。args[i]代表的是args中第i个内容。i是通过for循环不断变化的,所以,就不断的取args中不同的内容。
                                switch(args[i])
                                {
                                       //如果是“/a”,就运行a方法。在下面可以看到我们声明的方法a;
                                        case "/a":
                                                a(args[i+1]);
                                                //必须要加break来跳出选择,否则会全部运行一遍。
                                                break;
                                          //如果是/?,就运行help方法。
                                        case "/?":
                                                help();
                                                break;
                                               
                                }
                        }
                }
                 //自定义方法 a,(string e)表示声明一个字符串类型的变量,名字是e
                private static void a(string e)
                {
                        //在控制台输出
                        Console.WriteLine("这是参数a:"+e);
                }
                //自定义方法help
                private static void help()
                {
                       //这里要注意的是“\n”,这是换行符。
                        Console.WriteLine("这是参数help:\n/a [参数] 输出参数;");
                }
[/code]F5运行,发现一闪而过。没问题。看看我们的成果吧:
在你保存项目的文件夹中,找到bin\Debug。这里有个EXE文件。这就是我们的成果了 。
也可以点击按钮(如图),可以看到bin\Debug文件夹,右键菜单中可以直接打开文件夹。
[attach]5618[/attach]

下面是我写好的sharpDevelop工程。大家可以参考一下。
[attach]5619[/attach]

有时间我会继续写教程的。

defanive 发表于 2012-8-30 00:28

转移到第三方开发版块吧
我对.net开发第三方的态度目前是,没有类库运行不了导致实用性大大降低
而且启动速度所限不能做高频率被调用的第三方

garyng 发表于 2012-8-30 00:38

有空写个用asm的教程呗

Demon 发表于 2012-8-31 21:30

不知道现在.NET的装机率是多少,有10%吗?

xinje 发表于 2012-9-1 13:05

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=116063&ptid=18773]4#[/url] [i]Demon[/i] [/b]
win7 已经预安装 .net3.5
xp 虽然没有预置,但是现在没有.net几乎什么都做不了。玩游戏、一些应用、甚至一些网站都无法浏览。
.net安装我认为绝对超过95%

defanive 发表于 2012-10-12 06:45

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=116094&ptid=18773]5#[/url] [i]xinje[/i] [/b]
.net带来的是开发上的便利,但是对效果并没有什么特长
简单的来说,开发大工程.net舒服很多,本人也很喜欢上次在.net下开发的经验
但是本质上只是对API的封装,.net库能做的,用API也能做
而且相比携带巨大的库,纯API开发出来的优势也是明显的
.net带来的开发者的便利,对于大项目来说无可比拟
但是对于第三方这样的小东西,把LZ编译出来的exe大小和执行速度同VC++开发出来的比较一下吧
并非说.net不好,只是各有所长,第三方等开发或许.net并不在优
当然仍然非常支持这系列的文章
PS 其实我的第一个第三方是用C#开发的!C++是后来才上手的

xinje 发表于 2012-10-15 00:06

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=118259&ptid=18773]7#[/url] [i]defanive[/i] [/b]
我只是觉得C#更简单一些,对于论坛里,很多人没有这方面的经验,而c#很适合初学者,仅此而已。
我也想写c++的教程,不过不是一天两天能说明白的。
我曾经在论坛发布第三方全部都是vc6的。但是就算公布源码,估计初学者很难滤清头绪,而C#我想有10天就差不多了。

deveyy 发表于 2013-2-25 17:01

学习了,利用地三方,比较简单

wanfcl83 发表于 2013-11-12 22:59

英文版的看不懂呀 楼主 我英语没过呢

转世燕 发表于 2015-11-28 15:47

收了慢慢学

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.