【发布时间】:2013-03-05 18:03:46
【问题描述】:
使用我的 winform 应用程序从右键菜单打开文件时,我似乎无法获得正确的文件路径。我希望能够右键单击一个文本文件,运行我的程序(regedit.exe 中的 c:\MyApp %1)并在程序打开之前让文件路径出现在消息框中。现在我似乎得到的只是我实际程序的文件路径。这就是我到目前为止所拥有的。
public partial class Form1 : Form
{
public Form1()
{
string[] args = Environment.GetCommandLineArgs();
foreach (string arg in args)
{
MessageBox.Show(arg);
}
InitializeComponent();
}
任何帮助将不胜感激。我知道这可能是一个简单的解决方法,但我对此很陌生,可能会遗漏一些明显的东西。
谢谢。
【问题讨论】:
-
您是否只有 1 个带有程序名称的 msgbox?你能检查它是否不是你的注册表项错误吗?例如,使用控制台中的任何参数运行您的应用程序:app.exe test?
-
是的,程序路径中出现了一个 msgbox。我把它放在 HKEY_CLASSES_ROOT -> txtfile -> shell -> "MyCommandName" -> command -> c:\MyApp %1 下。似乎工作正常。
-
您应该在命令中有 1 个默认值,如下所示:“C:\MyApp.exe”“%1”。不要忽略“的。你的程序应该一个接一个地打印2个消息框。程序的名称,当你确定时 - 文件的名称。
-
添加了引号,但我仍然只得到一个带有我的程序路径的消息框。
-
我已经在我的机器上检查过了,它工作正常。我唯一想到的是检查 GetCommandLineArgs() 的长度 - 第一个 arg 是 exe 文件的路径是正常的。但是,如果您使用参数运行它,则应该将其作为数组中的第二个元素。
标签: c#