我有一个应用程序,我有一个与之关联的文件类型。当我双击该文件时,它会打开我的应用程序,但文件名/路径永远不会传递给我的应用程序。但是,如果我将文件拖到图标上,它确实有效。这是main():
static void Main(string[] filenames)
{
Form1 form = null;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
form = new Form1();
if (filenames != null && filenames.Length > 0)
form.FileName = filenames[0];
Application.Run(form);
}
filenames.length每次都出现0(除非我将文件拖放到应用程序上)
答案 0 :(得分:2)
您的文件关联是否包含%1或“%L”作为命令行的一部分?这是将文件名传递给应用程序所必需的。 (“%L”表示完整的长文件名,%1是缩短的8.3文件名。)
在应用程序图标上删除文件时,应用程序确实收到文件名的原因是因为Windows在此处不使用文件关联。事实上,它适用于任何程序,无论是否有文件关联。在这些情况下,它猜测您可能希望以文件名作为参数启动应用程序。
答案 1 :(得分:1)
你应该试试
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
也是一个字符串[]
答案 2 :(得分:1)
您需要在文件关联设置中使用%1或%L来“告诉”Windows资源管理器在双击文件时将文件名传递给您的应用程序。一个例子:
http://hypography.com/forums/tutorials-and-how-tos/15876-windows-file-association-tutorial.html