一起谈.NET技术,Silverlight实例教程 - Out of Browser与COM互操作实例

简介:   Silverlight 实例教程索引Silverlight 实例教程 - Out of Browser开篇Silverlight 实例教程 - Out of Browser配置,安装和卸载Silverlight 实例教程 - Out of Browser的自定义应用Silverligh...

  Silverlight 实例教程索引

  在前面已经介绍了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模式下可以对本地数据库进行操作,推荐大家参考学习

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

  源代码下载

目录
相关文章
|
7月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
554 0
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
285 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
330 6
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
661 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
785 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
411 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
357 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
341 0