使用右键菜单中的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();
}
非常感谢任何帮助。我知道这可能是一个简单的修复,但我在这方面很新,可能会遗漏一些明显的东西。
谢谢。
答案 0 :(得分:2)
不确定这些信息是否会有所帮助,因为听起来你已经检查了所有这些,但我刚刚运行了这个快速测试并且它有效:
首先,注册表设置应如下所示。如果%1周围没有引号,并且它是一个长文件名,例如“New Text Document.txt”,则每个单词将成为一个单独的参数,因此请务必在“%1”周围加上引号。
假设注册表设置正确,您现在应该在右键单击文本文件时看到新命令:
程序运行时,数组中的第一项(即args [0])将成为EXE的路径。第二个项目是args [1],应该是文件的名称。
如果你添加了行
MessageBox.Show(参数[1])
当您通过右键单击运行时,您应该完整地看到文件的名称。如果你得到一个错误,说“索引超出了数组的范围”那么它肯定没有得到论证。
测试程序运行正常的一种方法是打开DOS提示符并输入这样的程序路径,然后按Enter键:
c:\ MyApp.exe“此行应显示为”
这会绕过注册表并直接测试程序。如果这样可行,那么您知道问题不在于程序本身,而在于注册表设置。如果这不起作用,那么C#代码仍然存在一些问题。