2009-09-04 32 views
1

我有一個應用程序,我有一個文件類型與它關聯。當我雙擊文件時,它會打開我的應用程序,但文件名/路徑永遠不會傳遞給我的應用程序。但是,如果將該文件拖動到圖標上,它確實有效。這裏是主要的():文件名未被傳遞到主

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每次(除非我拖/文件拖放到應用程序)

回答

1

你應該嘗試

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData 

也是是一個字符串[]

+0

除非您使用ClickOnce啓動應用程序,否則我無法看到這將如何幫助普通的本地安裝的應用程序。 – Ruben 2009-09-04 17:34:07

+0

我正在使用ClickOnce,所以我會研究這個。 – 2009-09-04 17:42:47

+0

我的意思是說,「當您使用ClickOnce通過點擊瀏覽器中的網址來啓動應用程序**」時。在這種情況下,瀏覽器可以將其他參數作爲URL的一部分傳遞給您的程序,您可以通過此API獲取該參數。看到我的答案可能發生在這裏。 – Ruben 2009-09-04 17:49:56

2

請問您的文件關聯包含%1「%L 「作爲命令行的一部分?這是將文件名傳遞給應用程序所必需的。 (「%L」表示完整的長文件名,%1是縮短的8.3文件名。)

當應用程序圖標上放置文件時,應用程序確實收到文件名的原因是Windows在這裏不使用文件關聯。實際上,它適用於任何程序,無論是否有文件關聯。在這些情況下,它猜測你可能想用文件名作爲參數來啓動應用程序。