Передать аргументы командной строки в приложение OOB Silverlight 4 - PullRequest
5 голосов
/ 06 мая 2010

Мне нужно запустить приложение Silverlight 4 OOB через существующее приложение WinForms (используя System.Diagnostics.Process для выполнения sllauncher.exe).Я надеялся, что найдется какой-нибудь способ заставить sllauncher.exe принять и передать аргументы командной строки приложению OOB, но я не смог понять это.

Ответы [ 3 ]

4 голосов
/ 10 мая 2010

Silverlight не предоставляет API для доступа к аргументам командной строки.

Именно здесь WPF (и, возможно, щелчок один раз) будет лучшим вариантом.

Или рассмотрите возможность сохранения «данных», которые необходимо передать в локальный файл, доступный приложению Silverlight, когдаэто начинается.

3 голосов
/ 26 августа 2013

Вы можете обойти это, передав URL-адрес параметру sllauncher.exe /origin, например ::

sllauncher.exe /overwrite /emulate:c:\temp\Hello.xap /origin:c:\temp\Hello.xap?key=value.

В вашем коде Silverlight вы можете получить доступ к значению параметра /origin через

Application.Current.Host.Source.OriginalString 
// file:///C:/temp/Hello.xap%3Fkey=value

(MSDN: http://msdn.microsoft.com/en-us/library/system.windows.interop.silverlighthost.source(v=vs.96).aspx)

К сожалению, поскольку URI является file:/// URI, параметры запроса не сохраняются в Source.QueryString. Однако это также может создать возможности для «злоупотребления» - мой ограниченный опыт заключается в том, что sllauncher запустится, если то, что передано в /origin , несколько выглядит как путь или URI.

0 голосов
/ 09 июня 2011

Да, это возможно в Silverlight

dynamic cmd=AutomationFactory.CreateObject("Shell.Application");
cmd.ShellExecute(@path_of_ur_exe,null,null,null,1);
...