Silverlight實例教程 - Out of Browser與COM互操作實例

作者: jv9  來源: 博客園  發布時間: 2010-08-15 10:26  閱讀: 2261 次  推薦: 0   原文鏈接   [收藏]  

  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模式下可以對本地數據庫進行操作,推薦大家參考學習

今天就寫到這里了,希望能對大家有所幫助。

  源代碼下載

0
0
 
標簽:Silverlight
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()