zoukankan      html  css  js  c++  java
  • 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(一群)
  • 相关阅读:
    druid 连接池的配置参数
    docker启动tomcat容器访问端口显示404
    idea 查看类继承关系的快捷键
    EmbeddedServletContainerCustomizer 被代替
    Springboot中WebMvcConfigurer接口详解
    Thymeleaf 参考手册
    CSS之px、em、rem、pt的用法和区别
    CSS之text-align
    相对路径和绝对路径(实例)
    CSS的引入方式及link和@import的区别
  • 原文地址:https://www.cnblogs.com/jv9/p/1795393.html
Copyright © 2011-2022 走看看