要点:
1. Silverlight必须启用OOB模式,以及 Require elevated trust when running in-browser.参考下图设置
注:OOB模式,并不意味着必须脱离浏览器运行,仍然可以嵌入到网面中运行
2. 必须添加Microsoft.CSharp.dll 引用,默认在目录 c:\Program Files\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\ 下
3. 调用的exe路径,不允许出现空格
下面是使用示例:
1 using System;
2 using System.Runtime.InteropServices.Automation;
3 using System.Windows;
4 using System.Windows.Controls;
5
6 namespace SLTrustSample
7 {
8 public partial class MainPage : UserControl
9 {
10 public MainPage()
11 {
12 InitializeComponent();
13 }
14
15 private void CallExe(String exeFilePath)
16 {
17 try
18 {
19 dynamic cmd = AutomationFactory.CreateObject("WScript.Shell");
20 cmd.Run(exeFilePath, 1, true);
21 }
22 catch (Exception ex)
23 {
24 MessageBox.Show("权限不足,请再OOB模式下运行,详细原因:" + ex.Message);
25 return;
26 }
27 }
28
29
30
31 private void LaunchMyApp(object sender, RoutedEventArgs e)
32 {
33 CallExe(@"C:\exe\cpu-monitor.exe");
34 }
35
36
37 private void LaunchNotepad(object sender, RoutedEventArgs e)
38 {
39 CallExe(@"notepad c:\\test.txt");
40 }
41 }
42 }
除调用本机exe外,其实还能干很多其它事情,比如读取Windows注册表,调用本机Com组件完成指定的功能...
使用场景:比如最常见的IM聊天工具,浏览网页后,在网页上点击“与我聊天”按钮,启动本机客户端的IM聊天工具。当然,不止这一种场景,其它场景请自行脑补:)