Je dois lancer une application OLE Silverlight 4 via une application WinForms existante (en utilisant System.Diagnostics.Process
pour exécuter sllauncher.exe
). J'espérais qu'il y aurait un moyen de faire en sorte que sllauncher.exe
accepte et transmette les arguments de la ligne de commande à l'application OOB, mais je n'ai pas pu le comprendre.Passer les arguments de ligne de commande à l'application OOB Silverlight 4
Répondre
Silverlight ne fournit pas d'API pour accéder aux arguments de la ligne de commande.
C'est là que WPF (et peut-être une seule fois) serait une meilleure option. Vous pouvez également stocker les «données» devant être transmises dans un fichier local accessible par l'application Silverlight au démarrage.
yah son possible dans silverlight
dynamic cmd=AutomationFactory.CreateObject("Shell.Application");
cmd.ShellExecute(@path_of_ur_exe,null,null,null,1);
Vous pouvez contourner ce problème en passant une URL au paramètre de /origin
sllauncher.exe
, .: par exemple
sllauncher.exe /overwrite /emulate:c:\temp\Hello.xap /origin:c:\temp\Hello.xap?key=value
.
Dans votre code Silverlight, vous pouvez accéder à la valeur du paramètre /origin
via
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)
Malheureusement, parce que l'URI est un URI file:///
, les paramètres de la requête ne sont pas stocké dans Source.QueryString
. Cela pourrait également créer des opportunités, cependant, pour "abus" - mon expérience limitée est que sllauncher
va commencer si ce qui est passé à /origin
quelque peu ressemble à un chemin ou URI.