C#带参main函数的问题

nk_maquan 2008-08-04 08:48:15
我自己做的一个工具,希望能关联一种特殊文件类型,即点击该类型文件就自动调用我的工具打开该类型文件。成功实现的注册表关联,使用了带参数的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".是我的设定有问题,
还是原本就是这样啊?
...全文
130 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy011 2008-08-05
  • 打赏
  • 举报
回复
其实不光是在桌面
在任何完整路径带空格的位置都会出现这个问题的
两种方法都能解决(参数和注册表)

学习了
nk_maquan 2008-08-04
  • 打赏
  • 举报
回复
用3楼的办法可以直接解决,就是写注册表的时候shell/open/command 的默认值设置为: 程序路径 "%1" 就可以解决, 如果设置成:程序路径 %1就会有我所说的问题。10楼的方法还没测试,应该也是ok的
ycg_893 2008-08-04
  • 打赏
  • 举报
回复
是从进程命令来读取
ycg_893 2008-08-04
  • 打赏
  • 举报
回复
无需用static public void main(string[] args)
ycg_893 2008-08-04
  • 打赏
  • 举报
回复
无需这么复杂,这个事件是由Windows触发的,只要如下代码就可以了.

string PathFileName = Environment.CommandLine;
string[] para = PathFileName.Split('\"');
if (para.Length > 3)
{
string Path=para[3]; //这个就是路径,可在Load事件就调用,如打开文件
}
else
{
//表示没有触发,如创建新文件
}
chenn 2008-08-04
  • 打赏
  • 举报
回复
我在java里面遇到类似的问题,头疼死了,后来找了个很偷懒的办法,定死一个文件路径,才解决。
wdgphc 2008-08-04
  • 打赏
  • 举报
回复
这个没太好的办法.

比如

cmd下

ren c:\Documents and Settings\admin\1.txt 1.rrr
都提示语法错误!
但是
ren "c:\Documents and Settings\admin\1.txt" 1.rrr
是可以的.

但是这个你能控制吗?
paulin 2008-08-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyi8808 的回复:]
"C:\Documents and Settings\maxx\桌面\xxx.xxx",加上双引号。
[/Quote]
正确
nk_maquan 2008-08-04
  • 打赏
  • 举报
回复
是这样的,因为要做文件类型关联,所以main函数的参数是操作系统传进来的,不是我能控制的,但是我需要但文件路径中有空格时不会发生断开的情况,有没人知道要怎么弄啊
nk_maquan 2008-08-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ChrisAK 的回复:]
lz的注册表里写的是
x:\xxx\xx.exe %1吧?
你改成
x:\xxx\xx.exe "%1"试试
[/Quote]

感觉应该就是这个问题吧,一语惊醒梦中人啊,呵呵。
wuyi8808 2008-08-04
  • 打赏
  • 举报
回复
"C:\Documents and Settings\maxx\桌面\xxx.xxx",加上双引号。
ChrisAK 2008-08-04
  • 打赏
  • 举报
回复
lz的注册表里写的是
x:\xxx\xx.exe %1吧?
你改成
x:\xxx\xx.exe "%1"试试
wdgphc 2008-08-04
  • 打赏
  • 举报
回复
你可以试试写成 C:\Docume~1\maxx\桌面\xxx.xxx 在中间不能有空格
wdgphc 2008-08-04
  • 打赏
  • 举报
回复
args[] 是以空格分割数组的.

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧