注册文件类型,并关联程序(三)

双击一个txt文件,就能用记事本打开,因为txt文件关联了记事本程序。

想让你自定义的文件类型也通过双击就能直接调用你的程序并打开?OK,首先我们找到第一期,看到其中的这行代码:

Registry.SetValue(@"HKEY_CLASSES_ROOT\MyGuo\shell\open\command", "", "D:\\bin\\Guo.exe \"%1\"");//关联程序

当你双击D:\bin\a.guo文件,就相当于执行了这样的命令行:

D:\bin\Guo.exe “D:\bin\a.guo”

D:\bin\a.guo就通过命令行参数传递给了Guo.exe程序。

但是exe程序要怎么接受到这个命令行参数呢?

在VS中,如果你新建一个“控制台程序”,在自动创建的Program.cs中会有这么一个方法

static void Main(string[] args)

其中args就是命令行参数。接上面那个例子,那args[0]就是“D:\bin\a.guo”;

可是,当你创建的是一个“Windows窗体应用程序”时,会发现Program中的Main是这样的

static void Main()

args不见了!不要急,把Main()改成Main (string[] args)就行了。

另外,args在这里是不会为null的,如果没有任何参数,这时候是args.Length==0;

 

有的时候,我们的程序对命令行参数是有格式限制的,比如有可能是这个样子来表示输入文件的:

D:\bin\Guo.exe –i “D:\bin\a.guo”

这种以“键值对”作为参数的方式在实际中十分普遍,因为这样子不用限制参数的顺序,也方便记忆;对于这样的形式,你只需要把上面command的内容改为"D:\\bin\\Guo.exe –i \"%1\""即可;

不过这种方式有两种情况需要注意:拖动文件到Guo.exe文件上释放、在“打开方式”中选择使用Guo.exe文件打开;

这两种情况,Windows都会执行以下命令行来打开exe:

D:\bin\Guo.exe “文件路径”

不会有-i参数。怎么处理,就看你自己的了。

posted @ 2013-05-09 15:50  季风哥  阅读(322)  评论(0编辑  收藏  举报