我已经在Windows中注册了文件关联,以在应用程序中打开特定的文件类型,以便当用户双击文件时,它将在我的应用程序exe中打开。
我从参数接收文件路径并打开它。但是,如果文件夹或文件名包含空格(有时超过一个空格),则参数长度大于1,并且我不知道如何将其解析为单个文件路径。 我无法控制传递的参数,因为Windows会将双击传递的参数传递给我的应用程序exe。
示例文件路径:C:\ Sample 1 \ file 1.rtf
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
任何建议,谢谢。
答案 0 :(得分:2)
您需要将文件名用引号引起来。
applicationname.exe "C:\Sample 1\file 1.rtf"
答案 1 :(得分:2)
您应该在传递参数之前引用它:
myapplication.exe "C:\Sample 1\file 1.rtf"
如果我们查看.sln
下Visual Studio的HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\Open\Command
文件的关联,我们可以看到该关联引用了文件名:
"C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\VSLauncher.exe" "%1"
您与程序的关联也应如此。或者,您可以将参数连接到单个字符串中:
var path = string.Join(string.Empty, args);
但是,这不太灵活。尤其是如果您需要传递多个参数。