首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

ATL 開發與部署 ActiveX 控件極簡範例:從建立到 CAB 打包

     編輯:關於VC++

本文示範以 ATL 建立最簡單的 ActiveX 控件,並打包成 .cab 檔供網頁下載安裝,涵蓋安全性標記、INF 腳本撰寫、cabarc 工具使用全流程。

1. 控件專案與安全性標記

  • ATL 專案 → 加入簡單類別(如 CAirlineInfo)。
  • 在類別宣告加入分類對應,標記為安全可腳本存取、安全可初始化:
BEGIN_CATEGORY_MAP(CAirlineInfo)
    IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
    IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)
END_CATEGORY_MAP()
  • stdafx.h 引入 #include <objsafe.h>。
  • 類別內任意方法呼叫 WinExec 示範功能。

2. INF 安裝腳本撰寫

檔名 test.inf,內容結構:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
zqcom.dll=zqcom.dll
msvcr71d.dll=msvcr71d.dll

[zqcom.dll]
file-win32-x86=thiscab
clsid={CB4C551D-2BF5-40F7-866B-922DBEA618F2}
FileVersion=1,0,0,0
RegisterServer=yes

[msvcr71d.dll]
file-win32-x86=thiscab
RegisterServer=yes
  • clsid 對應控件類別的 CLSID。
  • msvcr71d.dll 為 VC.NET 專案的 CRT 依賴;VC6 專案則為 mfc42.dll。

3. 打包 .cab 檔

CABARC n e:\myinf.cab e:\zqcom.dll e:\msvcr71d.dll e:\test.inf
  • 若 cabarc 不在路徑,搜尋後加入環境變數。
  • 產出的 .cab 放置網站虛擬目錄(如 c:\Inetpub\wwwroot\)。

4. 用戶端安全性設定

控件未簽章,IE 預設會阻擋。用戶需暫時將「網際網路」與「區域網路」安全性層級調低,允許「未簽章的 ActiveX 控件執行」,安裝完成後再改回。

完整部署流程圖

  1. ATL 專案建立控件 + 安全性分類
  2. 編譯產出 DLL 與相依庫
  3. 撰寫 INF 指定 CLSID、版本、相依檔
  4. cabarc 打包
  5. 網頁 <OBJECT codebase="xxx.cab"> 參考
  6. 用戶端降低安全性安裝 → 還原安全性

此範例為最小可行部署骨架,正式產品建議申請 Authenticode 簽章以免用戶調整安全性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved