Silverlight实例教程 - Out of Browser与COM互操作实例

  

 

在前面已经介绍了Silverlight的Out of Browser模式与COM的基本操作以及与Office COM的交互。这篇我们将介绍更多Silverlight Out of Brwoser的COM实例。

 

我们将继续使用过去的SilverlightOOBDemo项目进行简单扩展。

 

 

实例1:演示Silverlight与DOS的交互,对于Windows API熟悉的朋友应该了解,使用WShell可以运行任何Dos命令。

 

1  private   void  dosBtn_Click( object  sender, RoutedEventArgs e)
2  {
3               using  (dynamic shell  =  AutomationFactory.CreateObject( " WScript.Shell " ))
4              {
5                   // shell.Run(@"cmd /k dir /w /p");
6                  shell.Run( @" cmd /k ping www.cnblogs.com -t " );
7              }
8 
9  }

 

 

 

实例2:使用WShell API模拟用户输入实例。使用WShell的SendKeys可以模拟用户输入效果到应用程序中,并且可以模拟一些特殊键功能,例如,回车,Tab,Ctrl等按键。

其中要实现模拟输入代码如下:

 

1  private   void  inputBtn_Click( object  sender, RoutedEventArgs e)
2  {
3       using  (dynamic shell  =  AutomationFactory.CreateObject( " WScript.Shell " ))
4      {
5          shell.Run( @" c:\windows\notepad.exe " );
6          shell.SendKeys( " my blog:{Enter}jv9.cnblogs.com " );
7      }
8  }

 

 

 

实例3:Silverlight OOB应用读取注册表信息实例

使用Shell.Application的RegRead方法可以读取本地注册表键值,例如,读取“HKLM\Software\Microsoft\ASP.NET\RootVer”,.Net Framework的版本。

 

1  private   void  regBtn_Click( object  sender, RoutedEventArgs e)
2  {
3               using  (dynamic WShell  =  AutomationFactory.CreateObject( " WScript.Shell " ))
4              {
5                   string  reg  =  WShell.RegRead( @" HKLM\Software\Microsoft\ASP.NET\RootVer " );
6                  MessageBox.Show( " .Net Framework Root Version:  "   +  reg);
7              }
8  }

 

读取结果:

 

实例4:使用Shell.Application的RegWrite方法可以对注册表进行写操作。这个实例将实现添加Silverlight Out of Browser应用到Windows启动项。

 

 

 1  private   void  regWriteBtn_Click( object  sender, RoutedEventArgs e)
 2  {
 3               using  (dynamic ShellApplication  =  AutomationFactory.CreateObject( " Shell.Application " ))
 4              {
 5                  dynamic commonPrograms  =  ShellApplication.NameSpace( 11 );
 6                   string  allUsersPath  =  commonPrograms.Self.Path;
 7 
 8                  dynamic directory  =  ShellApplication.NameSpace(allUsersPath  +   @" \Programs " );
 9                  dynamic link  =  directory.ParseName(Deployment.Current.OutOfBrowserSettings.ShortName  +   " .lnk " );
10                   string  OOBLink  =  link.Path;
11 
12                   using  (dynamic WShell  =  AutomationFactory.CreateObject( " WScript.Shell " ))
13                  {
14                      WShell.RegWrite( @" HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ "
15                                                    +  Deployment.Current.OutOfBrowserSettings.ShortName,
16                                                   OOBLink);
17                      MessageBox.Show( " 请重启你的机器,你的应用将被自动载入启动列表. " );
18                  }
19              }
20  }

 

 

当运行以上代码后,应用会将OOB应用快捷方式写入注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\

应用程序将在下次重启后,自动启动。

 

实例5:使用Windows 7 API实现锁定应用到Windows 7任务栏

 

在Windows 7中使用Shell.Application类库允许遍历应用,检查Verbs进行应用锁定。

 

 1  private   void  pinBtn_Click( object  sender, RoutedEventArgs e)
 2  {
 3               using  (dynamic ShellApplication  =  AutomationFactory.CreateObject( " Shell.Application " ))
 4              {
 5                  dynamic commonPrograms  =  ShellApplication.NameSpace( 23 );
 6                   string  allUsersPath  =  commonPrograms.Self.Path;
 7 
 8                  dynamic directory  =  ShellApplication.NameSpace(allUsersPath  +   @" \Accessories " );
 9                  dynamic link  =  directory.ParseName( " Calculator.lnk " );
10 
11                  dynamic verbs  =  link.Verbs();
12                   for  ( int  i  =   0 ; i  <  verbs.Count(); i ++ )
13                  {
14                      dynamic verb  =  verbs.Item(i);
15                       if  (verb.Name.Replace( @" & " string .Empty).ToLower()  ==   " pin to taskbar " )
16                      {
17                          verb.DoIt();
18                      }
19                  }
20              }
21  }

 

 

当执行以上代码后,获取计算器应用快捷方式,然后执行“Pin to Taskbar”后,将应用锁定在Windows 7任务栏。

 

实例6:Silverlight Out of Browser语音阅读实例

使用Windows自带的Speech API中的SAPI引擎SpVoice类可以实现语音阅读功能。

 

 

1  private   void  speechBtn_Click( object  sender, RoutedEventArgs e)
2  {
3               using  (dynamic ISpeechVoice  =  AutomationFactory.CreateObject( " SAPI.SpVoice " ))
4              {
5                  ISpeechVoice.Volume  =   100 ;
6                  ISpeechVoice.Speak( " <rate speed=\ " 0 \ " ><pitch middle=\ " 0 \ " >Hello everyone! Welcome to my blog,http://jv9.cnblogs.com " );
7              }
8  }

 

 

当运行以上代码后,会听到以上阅读内容。

对于Silverlight Out of Browser的COM应用有一款开源项目COM Toolkit,该控件在OOB模式下可以对本地数据库进行操作,推荐大家参考学习

今天就写到这里了,希望能对大家有所帮助。

 

源代码下载

 

 

欢迎大家加入"专注Silverlight" 技术讨论群:

32679955(六群)
23413513(五群)
32679922(四群)
100844510(三群)
37891947(二群)
22308706(一群)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值