注册文件类型,并关联程序(三)
双击一个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参数。怎么处理,就看你自己的了。