Một số Cominterop hữu ích docx

26 271 0
Một số Cominterop hữu ích docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

231 19 Chương 19: MỘT SỐ COM INTEROP HỮU ÍCH 232 233 Chương 19: Một số COM Interop hữu ích ong đợi Microsoft .NET Framework sao lại tất cả các tính năng hiện có trong các thành phần COM là điều phi thực tế. Trong các chương trước, bạn đã biết cách mở rộng các chức năng của . NET bằng cách tận dụng các tính năng từ Win32 API , WMI , và các thành phần COM như Windows Script Host . Chương này sẽ xét một vài tính năng hữu ích hơn từ thế giới của mã lệnh không-được-quản-lý, bao gồm ADO kinh điển (mục 19.1), các thành phần cho trang web (mục 19.2 và 19.3), các thành phần dùng để tự động hóa Microsoft Word và Excel (mục 19.4 và 19.5), và những điều kiểm ActiveX cho phim động, flash, và hộp nhập text có mặt nạ che (mục 19.7, 19.8, và 19.9). Và hơn hết, mặc dù những điều kiểm và thành phần này tồn tại bên ngoài thư viện lớp . NET , việc hỗ trợ tính liên tác COM của .NET Framework khiến cho việc sử dụng chúng trở nên mạch lạc. 1 1 9 9 . . 1 1 S S ử ử d d ụ ụ n n g g A A D D O O k k i i n n h h ₫ ₫ i i ể ể n n V V Bạn muốn sử dụng các thư viện truy xuất dữ liệu ADO nhằm tạo sự liên tác với một ứng dụng hiện có hoặc bạn muốn truy xuất chức năng nào đó không có hiệu lực trong Microsoft ADO.NET . # # Sử dụng ADO Interop Assembly ADODB.dll (có trong . NET Framework ). Mặc dù . NET Framework được thiết kế cho mô hình truy xuất dữ liệu không-được-kết-nối của ADO.NET , bạn vẫn có thể sử dụng các đối tượng ADO nếu cần. Bạn cần thêm một tham chiếu đến Microsoft ActiveX Data Objects 2.7 Library ( msado15.dll ) bằng cách nhắp phải vào dự án, chọn Add Reference , và chọn thư viện này trong thẻ COM . Khi đó, một tham chiếu đến Interop Assembly ADODB.dll (đi kèm với . NET Framework và được cài đặt trong GAC ) sẽ được thêm vào dự án. Tất cả các đối tượng ADO đều nằm trong không gian tên ADODB . Hình 19-1 Chọn Microsoft ActiveX Data Objects 2.7 Library trong cửa sổ Add Reference M 234 Chương 19: Một số COM Interop hữu ích Các đối tượng ADO luôn kết nối thông qua OLE DB , cho nên bạn phải sử dụng cú pháp OLE DB đối với chuỗi kết nối. Bạn có thể thao tác trực tiếp các đối tượng Connection , Command , và Recordset , và ngay cả có thể chép dữ liệu từ một Recordset sang một DataSet bằng OleDbDataAdapter . Ứng dụng Console dưới đây sẽ trình bày kỹ thuật này: Public Module ADOTest ' Chú ý rằng chuỗi kết nối phải sử dụng cú pháp OLE DB. Private ConnectionString As String = "Provider=SQLOLEDB;" & _ "Data Source=localhost;Integrated Security=SSPI;" & _ "Initial Catalog=Northwind" Public Sub Main() ' Tạo các đối tượng ADO kinh điển. Dim ADOCon As New ADODB.Connection() ADOCon.ConnectionString = ConnectionString Dim SQL As String = "SELECT * FROM Customers" Dim Rs As ADODB.Recordset ' Tạo ADO.NET adapter sẽ chuyển dữ liệu Recordset thành một bảng ' trong DataSet. Chú ý rằng chỉ OLE DB provider mới có chức năng này. Dim Adapter As New System.Data.OleDb.OleDbDataAdapter() Dim Ds As New DataSet() Try ' Mở Recordset. ADOCon.Open() Rs = ADOCon.Execute(SQL) ' Chép Recordset vào DataSet. Adapter.Fill(Ds, Rs, "Customers") Catch Err As Exception Console.WriteLine(Err.ToString()) Finally ADOCon.Close() End Try Console.WriteLine("Retrieved " & Ds.Tables(0).Rows.Count & _ " rows.") Console.ReadLine() End Sub End Module 1 1 9 9 . . 2 2 H H i i ể ể n n t t h h ị ị t t r r a a n n g g w w e e b b v v ớ ớ i i I I n n t t e e r r n n e e t t E E x x p p l l o o r r e e r r V V Bạn muốn hiển thị một trang HTML (hoặc một kiểu tài liệu khác được Internet Explorer hỗ trợ) trong một ứng dụng Windows . # # Sử dụng điều kiểm ActiveX Web Browser đi kèm với Internet Explorer . . NET Framework không có điều kiểm nào để thể hiện nội dung HTML . Tuy nhiên, chức năng này là cần thiết, để hiển thị nội dung HTML cục bộ nào đó (như một tài liệu trợ giúp đa năng) hoặc thông tin nào đó từ web (chẳng hạn, một trang web liệt kê các download mà người dùng có thể sử dụng để cập nhật ứng dụng). Để hiển thị một trang HTML , bạn có thể thêm một cửa sổ Internet Explorer vào các ứng dụng Windows của bạn. Cửa sổ này không chỉ hỗ trợ HTML mà còn hỗ trợ mã JavaScript và Visual 235 Chương 19: Một số COM Interop hữu ích Basic Scripting Edition ( VBScript ), điều kiểm ActiveX , và nhiều plug-ins khác tùy thuộc vào cấu hình hệ thống của bạn (bao gồm Word , Excel , và Adobe Acrobat Reader ). Thực tế, bạn có thể sử dụng điều kiểm Web Browser để duyệt các thư mục trên một ổ đĩa cục bộ hoặc hiển thị các file trên một FTP site . Để có thể thêm Web Browser vào một dự án, nhắp phải vào hộp công cụ và chọn Add/Remove Items . Kế tiếp, chọn thẻ COM Components , và chọn Microsoft Web Browser ( shdocvw . dll ). Theo đó, điều kiểm Explorer được thêm vào hộp công cụ của bạn. Khi bạn thả điều kiểm này lên form, các Interop Assembly cần thiết sẽ được tạo ra và thêm vào dự án của bạn. Hình 19-2 Chọn Microsoft Web Browser trong cửa sổ Customize Toolbox Khi sử dụng Web Browser , bạn sẽ thường dùng các phương thức sau đây: • Navigate ⎯ chuyển đến URL do bạn chỉ định. • GoBack và GoForward ⎯ chuyển đến các trang trong history. • GoHome ⎯ chuyển đến trang home trên máy tính hiện hành, và GoSearch ⎯ hiển thị trang tìm kiếm. Ngoài ra, người dùng sẽ có thể thực hiện chuyển hướng (navigation) bằng cách nhắp vào các liên kết trang (nếu chúng tồn tại). Bạn có thể lấy URL hiện hành từ thuộc tính LocationURL và xác định điều kiểm vẫn còn xử lý trang đó hay không bằng cách xét thuộc tính Busy . Ngoài ra, bạn có thể phản ứng với nhiều sự kiện khác nhau. Public Class Form1 Inherits System.Windows.Forms.Form ' (Bỏ qua phần mã designer.) Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Explorer.Navigate2("http://localhost") End Sub 236 Chương 19: Một số COM Interop hữu ích Private Sub cmdBack_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdBack.Click Try Explorer.GoBack() Catch MessageBox.Show("Already on first page.") End Try End Sub Private Sub cmdForward_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdForward.Click Try Explorer.GoForward() Catch MessageBox.Show("Already on last page.") End Try End Sub Private Sub cmdHome_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdHome.Click Explorer.GoHome() End Sub End Class Hình 19-3 Sử dụng điều kiểm Web Browser 1 1 9 9 . . 3 3 V V ậ ậ n n h h š š n n h h I I n n t t e e r r n n e e t t E E x x p p l l o o r r e e r r V V Bạn muốn hiển thị một cửa sổ Internet Explorer độc lập, nhưng vẫn giữ lại quyền kiểm soát trên cửa sổ đó. # # Sử dụng Automation và điều kiểm Microsoft Internet Explorer để vận hành Internet Explorer . 237 Chương 19: Một số COM Interop hữu ích Microsoft cung cấp nhiều cách để truy xuất các chức năng của Internet Explorer . Bạn có thể đặt trực tiếp một cửa sổ trình duyệt Internet Explorer lên form, như đã trình bày trong mục 19.2, hoặc bạn có thể sử dụng Automation để vận hành một cửa sổ Internet Explorer độc lập. Trong cả hai trường hợp, mô hình đối tượng hầu như giống nhau. Để sử dụng Automation với Internet Explorer , trước tiên bạn phải thêm một tham chiếu đến thư viện COM cần thiết. Nhắp phải vào dự án của bạn trong Solution Explorer , chọn Add Reference , và chọn thẻ COM . Tìm Microsoft Internet Controls ( shdocvw . dll ) trong danh sách, và thêm nó. Các Interop Assembly cần thiết sẽ được tạo ra và thêm vào dự án của bạn ngay sau đó. Như với điều kiểm Web Browser , bạn có thể chuyển cửa sổ đến các URL khác nhau và thụ lý các sự kiện chuyển hướng (navigation). Ngoài ra, bạn có thể điều khiển cửa sổ là khả kiến hay không (bằng cách thiết lập thuộc tính Visible ), và bạn có thể đóng cửa sổ bằng cách gọi Quit . Ứng dụng Console dưới đây mở một cửa sổ Internet Explorer độc lập để hiển thị một URL được chỉ định. Kế đó, nó thụ lý sự kiện NavigateComplete2 , hiển thị các URL mới khi người dùng truy xuất chúng. Bạn có thể đóng cửa sổ Internet Explorer bằng cách nhấn Enter trong cửa sổ Console . Hình 19-4 Chọn Microsoft Internet Controls trong cửa sổ Add Reference Public Module IETest Public Sub Main() ' Tạo thể hiện IE. Dim IE As New SHDocVw.InternetExplorer() ' Kết nối hàm thụ lý sự kiện. AddHandler IE.NavigateComplete2, AddressOf IE_NavigateComplete2 ' Chuyển đến một trang mới. IE.Navigate("http://www.microsoft.com") 238 Chương 19: Một số COM Interop hữu ích ' Hiển thị cửa sổ. IE.Visible = True Console.WriteLine("Press any key to exit.") Console.ReadLine() Console.WriteLine("Closing the IE window.") IE.Quit() End Sub Public Sub IE_NavigateComplete2(ByVal pDisp As Object, _ ByRef URL As Object) Console.WriteLine("Visited: " & URL.ToString()) End Sub End Module 1 1 9 9 . . 4 4 V V ậ ậ n n h h š š n n h h M M i i c c r r o o s s o o f f t t W W o o r r d d V V Bạn muốn tương tác với Microsoft Word , để tự động hóa một tác vụ hoặc để đọc/ghi các tài liệu Word . # # Sử dụng các đối tượng Word Automation đi kèm với Microsoft Office . Microsoft cung cấp một mô hình đối tượng đa năng mà bạn có thể sử dụng để tương tác với Word và các ứng dụng Office khác. Bạn có thể sử dụng các đối tượng này để tạo và đọc các tài liệu Word , tự động hóa các tác vụ phức tạp hay lặp đi lặp lại, và ngay cả truy xuất các tính năng của Word như từ điển chính tả. Hình 19-5 Chọn Microsoft Word Object Library trong cửa sổ Add Reference 239 Chương 19: Một số COM Interop hữu ích Để sử dụng Automation với Microsoft Word , trước tiên bạn phải thêm một tham chiếu đến thư viện COM cần thiết. Nhắp phải vào dự án của bạn trong Solution Explorer , chọn Add Reference , và chọn thẻ COM . Tìm Microsoft Word Object Library trong danh sách, và thêm nó. Tên chính xác của đối tượng Automation này tùy thuộc vào phiên bản Word mà bạn đã cài đặt. Word 2000 sử dụng phiên bản 9.0, trong khi Word 2002 (có trong Office XP ) sử dụng phiên bản 10. Các Interop Assembly cần thiết sẽ được thêm vào dự án của bạn ngay sau đó. Các đối tượng này nằm trong không gian tên Word . # Bạn có thể trực tiếp download các Interop Assembly cho Office XP từ Microsoft [ http://msdn.microsoft.com/library/default.asp?url=/downloads/list/office.asp ]. Các assembly . NET này bọc các thành phần COM Office và có cải tiến đôi chút để mô hình đối tượng Office dễ sử dụng trong một ứng dụng . NET . Một khi bạn đã download các assembly này và cài đặt chúng trong GAC , chúng sẽ được sử dụng tự động khi bạn thêm một tham chiếu đến bất kỳ thành phần COM Office nào. Ứng dụng Console dưới đây sử dụng các đối tượng Word Automation theo nhiều cách khác nhau. Nó sẽ tạo một tài liệu phía nền, thực hiện kiểm tra chính tả, hiển thị một vài thông tin về tài liệu, hiển thị print-preview, và in tài liệu một cách tự động. Public Module DriveWord Public Sub Main() ' Khởi động Word phía nền. Dim App As New Word.Application() App.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone ' Tạo một tài liệu mới (không khả kiến đối với người dùng). Dim Doc As Word._Document = App.Documents.Add() Console.WriteLine() Console.WriteLine("Creating new document.") Console.WriteLine() ' Thêm một tiêu đề và hai dòng chữ. Dim Range As Word.Range = Doc.Paragraphs.Add().Range Range.InsertBefore("Test Document") Range.Style = "Heading 1" Range = Doc.Paragraphs.Add().Range Range.InsertBefore("Line one." & vbCrLf & "Line two.") Range.Font.Bold = True ' Sử dụng Word làm từ điển. Console.Write("Enter a word to look up: ") Dim TestWord As String = Console.ReadLine() If App.CheckSpelling(TestWord) = False Then Console.WriteLine(TestWord & " is not in the dictionary.") Console.WriteLine("Suggestions include:") Dim Suggestion As Word.SpellingSuggestion For Each Suggestion In App.GetSpellingSuggestions(TestWord) Console.WriteLine(Suggestion.Name) Next Else Console.WriteLine(TestWord & " is in the dictionary.") End If Console.WriteLine() 240 Chương 19: Một số COM Interop hữu ích ' Lưu và đóng tài liệu hiện hành. Doc.SaveAs(App.StartupPath & "\test.doc") Doc.Close() Doc = Nothing ' Bây giờ mở lại tài liệu, hiển thị print-preview, ' và làm cho Word trở nên khả kiến. Doc = App.Documents.Open(App.StartupPath & "\test.doc") Doc.PrintPreview() App.Visible = True ' Hiển thị một vài thông tin. Dim Words As Integer Words = Doc.ComputeStatistics(Word.WdStatistic.wdStatisticWords) Console.WriteLine("This document has " & Words.ToString() & _ " words.") ' Chuyển thành file PDF bằng Adobe Acrobat Distiller. ' Thất bại nếu Adobe Acrobat chưa được cài đặt đầy đủ. Try App.ActivePrinter = "Acrobat Distiller" Console.WriteLine("Press any key to print this document.") Console.ReadLine() Doc.PrintOut() Catch Console.WriteLine("Printer not found.") End Try ' Đóng và thoát Word. Console.WriteLine() Console.WriteLine("Closing Word.") Doc.Close() CType(App, Word._Application).Quit() End Sub End Module Kết xuất của ứng dụng này có thể như dưới đây. Hình 19-6 là tài liệu Word được sinh ra. Creating new document. Enter a word to look up: huggly huggly is not in the dictionary. Suggestions include: hugely ugly haggle haggy This document has 6 words. Press any key to print this document. Closing Word. # Để có thể gỡ rối với cửa sổ Word một cách trực quan, bạn hãy thiết lập thuộc tính Word.Application.Visible là True . Khi đã hoàn thiện phần mã lệnh, bạn có thể giấu cửa sổ này đi để người dùng không thể can thiệp vào đó. [...]... DriveExcelForm Inherits System.Windows.Forms.Form ' (Bỏ qua phần mã designer.) 242 Chương 19: Một số COM Interop hữu ích Hình 19-7 Chọn Microsoft Excel Object Library trong cửa sổ Add Reference Hình 19-8 Tạo một tài liệu Excel (với một biểu đồ) 243 Chương 19: Một số COM Interop hữu ích Hình 19-9 Chép một biểu đồ Excel vào một Windows Form Private Sub Form_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs)... được xem như một trực kiện 251 Chương 19: Một số COM Interop hữu ích / Dấu phân cách ngày Ký tự thực sự được sử dụng là ký tự được chỉ định làm dấu phân cách ngày trong các thiết lập bản địa hiện hành Ký tự này được xem như một trực kiện \ Xem ký tự kế tiếp trong chuỗi mặt nạ là một trực kiện Điều này cho phép bạn chèn các ký tự #, &, A, và ? vào trong chuỗi mặt nạ Ký tự này được xem như một trực kiện... 19: Một số COM Interop hữu ích ' Tạo một phiên làm việc mới Dim Session As New MSMAPI.MAPISession() ' Vô hiệu giao diện người dùng Session.LogonUI = False ' Không lấy mail khỏi mail-server Session.DownLoadMail = False ' Khởi chạy phiên làm việc Session.SignOn() ' Tạo một thông điệp mới Dim Messages As New MSMAPI.MAPIMessagesClass() Messages.SessionID = Session.SessionID Messages.Compose() ' Chỉ định một. ..241 Chương 19: Một số COM Interop hữu ích Hình 19-6 Tạo một tài liệu Word bằng mã lệnh 19.5 Vận hšnh Microsoft Excel Bạn muốn tương tác với Microsoft Excel, để tự động hóa một tác vụ hoặc để đọc/ghi các tài liệu Excel Sử dụng các đối tượng Excel Automation đi kèm với Microsoft Office Microsoft cung cấp một mô hình đối tượng đa năng mà bạn có thể sử dụng để tương... Hình 19-13 cho thấy một minh họa đơn giản của điều kiểm MCI (thêm vào hai nút playback tùy biến) Khi form nạp, một file MPEG mẫu được mở, và một PictureBox được kết với điều kiểm này Kế đó, thuộc tính Command được sử dụng để bắt đầu và ngừng playback 248 Chương 19: Một số COM Interop hữu ích Hình 19-13 Ứng dụng thử nghiệm điều kiểm MCI Public Class VideoForm Inherits System.Windows.Forms.Form ' (Bỏ... com/library/default.asp?url=/downloads/list/office.asp]), chúng sẽ được sử dụng một cách tự động Nếu không, một Interop Assembly mới sẽ được tạo ra Các đối tượng mà bạn cần sử dụng nằm trong không gian tên Excel Ứng dụng dưới đây sẽ tạo một tài liệu Excel mới, thêm vào một vài dữ liệu, tạo một biểu đồ, và chép dữ liệu biểu đồ vào một Windows Form Các bước này được thực hiện với cửa sổ Excel hoàn toàn khả... sinh ra và được thêm vào dự án Hình 19-16 Chọn Microsoft Masked Edit Control version 6.0 trong cửa sổ Customize Toolbox 252 Chương 19: Một số COM Interop hữu ích Hình 19-17 Ứng dụng thử nghiệm điều kiểm Masked Edit Đoạn mã dưới đây ấn định một mặt nạ bao gồm các chữ số và các mẫu tự được viết hoa/thường, được phân cách bởi dấu gạch nối: ' Hộp này lưu giữ những dữ liệu như 123-ABC-abc EditBox.Mask =... các hành động của nhân vật: người dùng có thể bảo nhân vật thực hiện hành động bằng cách nhấn 253 Chương 19: Một số COM Interop hữu ích phím [Scroll Lock] và rồi đọc tên hành động vào micro Ví dụ này cũng cho phép người dùng chuyển sang một nhân vật mới bằng cách gọi tên nhân vật, và còn tạo thêm một lệnh tùy biến là MoveToMouse Ngoài ra, nhân vật cũng sẽ đọc bất cứ text nào mà người dùng nhập vào TextBox... dụng Windows Media Player 9 Series Software Development Kit (download tại [http:// www.microsoft.com/downloads]) Microsoft cũng cung cấp một bộ công cụ DirectX được-quản-lý phục vụ cho việc phát triển đa phương tiện tham vọng hơn 249 Chương 19: Một số COM Interop hữu ích 19.8 Chơi file flash Bạn muốn chơi file flash (.swf) Sử dụng điều kiểm Shockware Flash Object Để có thể thêm điều kiểm Shockware Flash... DateTime.DaysInMonth(DateTime.Now.Year, i) Sheet.Range("A" & (i + 1)).Value = _ DateTimeFormatInfo.CurrentInfo.GetMonthName(i) Sheet.Range("B" & (i + 1)).Value = Days Next 244 Chương 19: Một số COM Interop hữu ích ' Tạo và định dạng một biểu đồ cột 3D mới Dim Chart As Excel.Chart = Doc.Charts.Add(, Sheet) Chart.ChartType = Excel.XlChartType.xl3DColumn Chart.SetSourceData(Sheet.Range("A1:B13")) ' Chép biểu đồ . 231 19 Chương 19: MỘT SỐ COM INTEROP HỮU ÍCH 232 233 Chương 19: Một số COM Interop hữu ích ong đợi Microsoft .NET Framework sao. 19: Một số COM Interop hữu ích Hình 19-7 Chọn Microsoft Excel Object Library trong cửa sổ Add Reference Hình 19-8 Tạo một tài liệu Excel (với một biểu đồ) 243 Chương 19: Một số. Explorer . 237 Chương 19: Một số COM Interop hữu ích Microsoft cung cấp nhiều cách để truy xuất các chức năng của Internet Explorer . Bạn có thể đặt trực tiếp một cửa sổ trình duyệt Internet

Ngày đăng: 12/08/2014, 00:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan