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

原创 2010年08月09日 09:11:00

 

在前面已经介绍了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(一群)

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Silverlight实例教程 - Out of Browser配置,安装和卸载

本篇将介绍Silverlight的Out of Browser在实例开发前的基础设置以及一些开发技巧。   在创建Silverlight项目时,默认是不支持Out of Browser模式...

Silverlight实例教程 - Out of Browser开篇

众所周知,学习一门IT技术,最关键的是实践,无论是软件开发还是网络调试,只要在真实环境下勤于动手和思考,很快就能掌握一门技术,Silverlight也不例外。为了帮助更多朋友快速学习掌握Silverl...

Silverlight实例教程 - Validation数据验证开篇

标签:基础Validation数据验证晒文章silverlight 4 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律...

Silverlight实例教程 - 理解Navigation导航框架Page类

在“Silverlight实例教程 - 理解Navigation导航框架Frame类” 介绍了Silverlight Navigation框架主要对象之一,Frame类,该类可以被简单的理解为Silv...
  • jv9
  • jv9
  • 2011-07-28 11:51
  • 3331

Silverlight实例教程 - Navigation导航框架URI映射机制

在上几篇Silverlight Navigation导航框架教程中,主要介绍了Silverlight Navigation导航框架基础,本篇开始将结合实例介绍Silverlight Navigatio...
  • jv9
  • jv9
  • 2011-08-09 12:15
  • 2765

Silverlight实例教程 - Validation数据验证基础属性和事件

标签:validationSilverlight数据验证晒文章实例教程 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律...

Silverlight实例教程 - 理解Navigation导航框架Frame类

通过“Navigation导航框架开篇” 的介绍,可以了解到Silverlight导航框架可被应用于多种场合,最为常见的是实现Silverlight项目内部页面切换。在 Silverlight SDK...
  • jv9
  • jv9
  • 2011-06-29 22:51
  • 4757

Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧

标签:silverlightvalidation数据验证晒文章实例教程 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律...

Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议

标签:ValidationSilverlight数据验证晒文章实例教程 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律...

Silverlight实例教程 - 理解Navigation导航框架Frame类

通过“Navigation导航框架开篇”的介绍,可以了解到Silverlight导航框架可被应用于多种场合,最为常见的是实现Silverlight项目内部页面切换。在Silverlight SDK中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)