How to get command line from a ClickOnce application?
Before publishing I went to Project -> Properties -> Options -> File Associations and added the extension ".hsp". Set an icon and a ProgID ("MyCompany.Document.1" for testing). After I published and installed, my .hsp files had the icon I set, so the file association should be properly set, but when I double clicked one of these files the application run and I expected the name of the file I double clicked to be in the command line. I tried reading the parameter passed to my Main
function, trie开发者_运维技巧d Environment.CommandLine
, and tried Environment.GetCommandLineArgs()
, but the only thing I found was the application path. By the way I'm doing all this check before creating my main form in the Main
function, just to test. The args
parameter is empty and the other two only contain my app path.
This is the beginning of my Main
function:
static void Main(string[] args)
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
MessageBox.Show("CommandLine -> " + Environment.CommandLine);
foreach (string str in args) MessageBox.Show("args -> " + str);
foreach (string str in Environment.GetCommandLineArgs()) MessageBox.Show("GetCommandLineArgs -> " + str);
When you publish an app with ClickOnce and then launch it by double-clicking an associated file, the path to that file actually gets stored here:
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0]
See MSDN's documentation for it here:
http://msdn.microsoft.com/en-us/library/system.runtime.hosting.activationarguments.aspx
Plus a tutorial on adding file associations to "Published" projects:
http://blogs.msdn.com/b/mwade/archive/2008/01/30/how-to-add-file-associations-to-a-clickonce-application.aspx
精彩评论