我自己做的一个工具,希望能关联一种特殊文件类型,即点击该类型文件就自动调用我的工具打开该类型文件。成功实现的注册表关联,使用了带参数的main函数来接受
文件的路径
main函数格式如下
static public void main(string[] args)
{
  ... ...
}结果出现一个问题是:如果我需要打开的文件是存放在桌面的C:\Documents and Settings\maxx\桌面\xxx.xxx
那么我的main()函数接收到的args[0] = "C:\Documents", args[1] = "and". 为什么不是args[0] = "C:\Documents and Settings\maxx\桌面\xxx.xxx".是我的设定有问题,
还是原本就是这样啊?

解决方案 »

  1.   

    args[] 是以空格分割数组的.
      

  2.   

    你可以试试写成 C:\Docume~1\maxx\桌面\xxx.xxx 在中间不能有空格
      

  3.   

    lz的注册表里写的是
    x:\xxx\xx.exe %1吧?
    你改成
    x:\xxx\xx.exe "%1"试试
      

  4.   

    "C:\Documents and Settings\maxx\桌面\xxx.xxx",加上双引号。
      

  5.   

    是这样的,因为要做文件类型关联,所以main函数的参数是操作系统传进来的,不是我能控制的,但是我需要但文件路径中有空格时不会发生断开的情况,有没人知道要怎么弄啊
      

  6.   

    这个没太好的办法.比如cmd下ren c:\Documents and Settings\admin\1.txt 1.rrr
    都提示语法错误!
    但是
    ren "c:\Documents and Settings\admin\1.txt" 1.rrr
    是可以的.但是这个你能控制吗?
      

  7.   

    我在java里面遇到类似的问题,头疼死了,后来找了个很偷懒的办法,定死一个文件路径,才解决。
      

  8.   

    无需这么复杂,这个事件是由Windows触发的,只要如下代码就可以了. string PathFileName = Environment.CommandLine;
                string[] para = PathFileName.Split('\"');
                if (para.Length > 3)
                {
                    string Path=para[3];  //这个就是路径,可在Load事件就调用,如打开文件
                }
                else
                {
                     //表示没有触发,如创建新文件
                }
      

  9.   

    无需用static public void main(string[] args)
      

  10.   

    用3楼的办法可以直接解决,就是写注册表的时候shell/open/command 的默认值设置为: 程序路径 "%1" 就可以解决, 如果设置成:程序路径 %1就会有我所说的问题。10楼的方法还没测试,应该也是ok的