說道ActiveX,我的第一直覺就是Flash,利用ActiveX、我們可以創建豐富的可交互式應用程序。同時、利用ActiveX特性、我們可以實現Js 與 ActiveX 的無縫連接(包括數據共享、和 接口相互調用),借助ActiveX打破瀏覽器限制、進而實現更顯更加強大的功能。
閑話少說、步入正題,看一下如何快速開發一個簡單的密碼登錄框:
- 新建一個Windows應用程序項目
- 修改 項目屬性——> 應用程序——> 輸出類型,改為 “類庫”。
- 修改 項目屬性——> 應用程序——> 程序集信息——> 勾選 '使程序集COM可見'.
- 為了方便調試(正式發布、此步驟可以跳過),勾選 '項目屬性——> 生成 ——> 為 COM 互操作 注冊' 。
- 刪除項目默認生成的 Form1 和 Program.cs,並新建 類型為 UserControl、名稱為 PasswordControl 的控件。
- 為 PasswordControl 添加 Guid.
- 為 PasswordControl 添加 密碼輸入框,名稱為 txtPwd。
- 為 PasswordControl 添加 GetPwd 公有方法,效果如下圖:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.InteropServices; namespace TestActiveX { [Guid("30A3C1B8-9A9A-417A-9E87-80D0EE827658")] public partial class PasswordControl : UserControl { public PasswordControl() { InitializeComponent(); } public string GetPwd() { return this.txtPwd.Text; } } }
- Js調用 ActiveX。
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script language="javascript" type="text/javascript"> function login() { console.info("密碼:" + activieX.GetPwd()); } </script> </head> <body> <div> <object width="350" height="100" id="activieX" classid="clsid:30A3C1B8-9A9A-417A-9E87-80D0EE827658"> </object> </div> <input type="button" onclick="javascript: login();" value="登錄" /> </body> </html>
- 至此,一個簡單的ActiveX就完成了。
測試項目源碼:http://files.cnblogs.com/files/08shiyan/TestActiveX.zip
(未完待續...)