2010-05-06 15 views
5

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

4

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.

0

yah son possible dans silverlight

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

Vous pouvez contourner ce problème en passant une URL au paramètre de /originsllauncher.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é à /originquelque peu ressemble à un chemin ou URI.