青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
簡(jiǎn)單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
如何打包網(wǎng)頁(yè)中的 MFC 控件

如何打包網(wǎng)頁(yè)中的 MFC 控件

本文的發(fā)布號(hào)曾為 CHS167158

本頁(yè)

展開全部 | 關(guān)閉全部

概要
在使用 OBJECT 標(biāo)記將 ActiveX 控件嵌入網(wǎng)頁(yè)中時(shí),用于指定下載位置的 CODEBASE 屬性可以指向 .cab 文件。建議使用這種方法打包 MFC...

在使用 OBJECT 標(biāo)記將 ActiveX 控件嵌入網(wǎng)頁(yè)中時(shí),用于指定下載位置的 CODEBASE 屬性可以指向 .cab 文件。建議使用這種方法打包 MFC ActiveX 控件。在 CAB 文件中打包 MFC ActiveX 控件時(shí),允許控件中包含 .inf 文件以便對(duì) ActiveX 控件的安裝進(jìn)行控制;允許對(duì)相關(guān) DLL 進(jìn)行命名并提供位置;允許代碼簽名以及自動(dòng)壓縮代碼以便更快地進(jìn)行下載。

更多信息
ActiveX 控件是使用 OBJECT 標(biāo)記嵌入到網(wǎng)頁(yè)中的。OBJECT 標(biāo)記的 CODEBASE 屬性指定從中下載控件的位置。CODEBASE 可以成功地指...

ActiveX 控件是使用 OBJECT 標(biāo)記嵌入到網(wǎng)頁(yè)中的。OBJECT 標(biāo)記的 CODEBASE 屬性指定從中下載控件的位置。CODEBASE 可以成功地指向一組不同的文件類型。

例如,CODEBASE 可以直接指向 .ocx 文件,如下所示:
CODEBASE="http://example.microsoft.com/somecontrol.ocx#version=4,70,0,1086"
				
因?yàn)檫@將僅下載和安裝 .ocx 文件,所以這種解決方案依賴于客戶機(jī)上已有的任何必要的支持 DLL。在多數(shù)情況下,應(yīng)該假設(shè)這些 DLL 不會(huì)存在于客戶端上,而且不是正確的版本。

另一種可供選擇的方法是將 CODEBASE 指向 .inf 文件,例如:
CODEBASE="http://example.microsoft.com/doyoutrustme.inf"
				
.inf 文件控制 .ocx 文件及其支持文件的安裝。不推薦使用這種方法,因?yàn)檫@種方法不能對(duì) .inf 文件進(jìn)行簽名(請(qǐng)參見“參考資源”一節(jié)以獲得有關(guān)代碼簽名的參考資料)。

最佳的解決方案是 CODEBASE 指向 CAB 文件。使用這種方法,可以引用支持 DLL 并對(duì) CAB 文件進(jìn)行簽名。

注意:如果遵循以下引用 MFC DLL 的說明,當(dāng)客戶端上已有 MFC DLL 時(shí),則不對(duì)它們進(jìn)行下載。CODEBASE 行類似如下內(nèi)容:
CODEBASE="http://example.microsoft.com/acontrol.cab#version=1,2,0,0"
				
注意,其中的 #Version 信息適用于 OBJECT 標(biāo)記的 CLASSID 參數(shù)所指定的控件版本。

Cab 打包概述

在 Cabinet 軟件開發(fā)工具包(也稱為 Cabinet SDK 或 CAB 開發(fā)工具包)中,可以找到構(gòu)造 CAB (.cab) 文件所需的工具。請(qǐng)參見以下 Microsoft 網(wǎng)站:
Microsoft Cabinet SDK
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncabsdk/html/cabdl.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncabsdk/html/cabdl.asp)
CODEBASE 指向的 CAB 文件應(yīng)當(dāng)包含 .ocx 文件和控制 ActiveX 控件安裝的 .inf 文件。在此 CAB 文件中,不應(yīng)包含系統(tǒng)中已有的相關(guān) DLL(如 MFC DLL)。相反,MFC DLL 和其他相關(guān) DLL 應(yīng)當(dāng)包裝在單獨(dú)的 CAB 文件中,并且可以由控件的 .inf 文件引用。以下示例說明如何打包 MFC Spindial 示例控件。

將 Spindial 控件包含到網(wǎng)頁(yè)中的 OBJECT 標(biāo)記類似以下內(nèi)容:
   <OBJECT ID="Spindial1" WIDTH=200 HEIGHT=200
   CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
   CODEBASE="http://example.microsoft.com/spindial.cab#Version=1,0,0,001">

         <PARAM NAME="_Version" VALUE="65536">
         <PARAM NAME="_ExtentX" VALUE="2646">
         <PARAM NAME="_ExtentY" VALUE="1323">
         <PARAM NAME="_StockProps" VALUE="0">
         <PARAM NAME="NeedlePosition" VALUE="2">
   </OBJECT>
				
在此示例中,Spindial.cab 必須包含兩個(gè)文件:Spindial.ocx 和 Spindial.inf。創(chuàng)建此 CAB 文件的命令類似以下內(nèi)容(具體取決于 Cabinet 開發(fā)工具包的安裝路徑):
C:\CabDevKit\cabarc.exe N spindial.cab spindial.ocx spindial.inf
				
以下是有關(guān) MFC Spindial 控件的示例文件 .inf。通過將 Spindial 信息更改為所需的 MFC ActiveX 控件信息,可以修改此 .inf 文件以下載任何 MFC ActiveX 控件。請(qǐng)參見以下注釋。
   ; ========================= spindial.inf ========================

   ; This .inf file will control the installation of the MFC Spindial
   ; control. This control has been compiled with Visual C++ version 4.2.
   ; The FileVersion tags in the dependent DLLs section on this file
   ; reflect this requirement.

   [version]
   ; version signature (same for both NT and Win95) do not remove
   signature="$CHICAGO$"
   AdvancedINF=2.0

   [Add.Code]
   spindial.ocx=spindial.ocx
   ; These are the necessary supporting DLLs for MFC 4.2 ActiveX Controls
   mfc42.dll=mfc42.dll
   msvcrt.dll=msvcrt.dll
   olepro32.dll=olepro32.dll
   ; thiscab is a keyword which, in this case, means that Spindial.ocx
   ; can be found in the same .cab file as this .inf file
   ; file-win32-x86 is an x86 platform specific identifier
   ; See the ActiveX SDK - ActiveX Controls - Internet Component Download -
   ; Packaging component code for automatic download

   [spindial.ocx]
   file-win32-x86=thiscab
   ; *** add your controls CLSID here ***
   clsid={06889605-B8D0-101A-91F1-00608CEAD5B3}
   ; Add your ocx's file version here.
   FileVersion=1,0,0,001
   RegisterServer=yes

   ; dependent DLLs
   [msvcrt.dll]
   ; This is an example of conditional hook. The hook only gets processed
   ; if msvcrt.dll of the specified version is absent on client machine.
   FileVersion=4,20,0,6164
   hook=mfc42installer

   [mfc42.dll]
   FileVersion=4,2,0,6256
   hook=mfc42installer

   [olepro32.dll]
   FileVersion=4,2,0,6068
   hook=mfc42installer

   [mfc42installer]
   file-win32-x86=VALUE=http://activex.microsoft.com/controls/vc/mfc42.cab
   ; If dependent DLLs are packaged directly into the above cabinet file
   ; along with an .inf file, specify that .inf file to run as follows:
   ;InfFile=mfc42.inf
   ; The mfc42.cab file actually contains a self extracting executable.
   ; In this case we specify a run= command.
   run=%EXTRACT_DIR%\mfc42.exe

   ; ====================== end of spindial.inf =====================
				
根據(jù)控件以及創(chuàng)建控件所使用的 MFC 版本,需要對(duì)此 .inf 文件的以下部分加以修改:
  • 對(duì) Spindial 的任何引用均應(yīng)更改為控件的名稱。這包括注釋和以下內(nèi)容:
       spindial.ocx=spindial.ocx
       [spindial.ocx]
    					
  • 應(yīng)該將以下內(nèi)容更改為控件的正確 CLSID 和文件版本:
       clsid={06889605-B8D0-101A-91F1-00608CEAD5B3}
       FileVersion=1,0,0,001
    						
    可以從上述控件的 ODL 文件中獲得控件的 CLSID。CLSID 與控件的 coclass 有關(guān)。例如,上述 CLSID 是從 Spindial.odl 的以下部分中獲得的:
       [ uuid(06889605-B8D0-101A-91F1-00608CEAD5B3),
    
         helpstring("Spindial Control"), control ]
         coclass Spindial
    						
    可以從控件的版本資源中獲得控件的文件版本。當(dāng)版本資源對(duì)任何文件都適用時(shí),可以使用 Visual Studio 打開文件(此例中為 Spindial.ocx)版本資源以獲得文件版本。從文件菜單中,選擇打開,然后單擊打開為: 資源。打開 Version 資源;所需的文件版本就在 FILEVERSION 后面列出。
  • 所要進(jìn)行的最后一項(xiàng)更改是,為每個(gè) MFC DLL([mfc42.dll]、[olepro32.dll] 和 [mscvrt.dll])輸入正確的文件版本。注意,如果使用的是 Visual C++ 4.1 或更早版本,則需要將對(duì) Mfc42.dll 的任何引用更改為 Mfc40.dll,將對(duì) Msvcrt.dll 的任何引用更改為 Msvcrt40.dll。
應(yīng)使用以下文件版本:

VC 4.1 和更早版本,使用:

http://activex.microsoft.com/controls/vc/mfc40.cab (http://activex.microsoft.com/controls/vc/mfc40.cab)
Olepro32.dll   4,1,0,6038
Mfc40.dll      4,1,0,6139
Msvcrt40.dll  4,10,0,6038
				

VC 4.2b 和更早版本,使用:

http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
Olepro32.dll   4,2,0,6068
Mfc42.dll      4,2,0,6256
Msvcrt.dll    4,20,0,6164
				

VC 5.0,使用:

http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
Olepro32.dll   5,0,4055,1
Mfc42.dll     4,21,0,7022
Msvcrt.dll     5,0,0,7022
				

VC 5.0sp1,使用:

http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
Olepro32.dll   5,0,4055,1
Mfc42.dll     4,21,0,7160
Msvcrt.dll     5,0,0,7128
				

VC 5.0sp2,使用:

http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
Olepro32.dll   5,0,4055,1
Mfc42.dll     4,21,0,7160
Msvcrt.dll     5,0,0,7128
				

VC 5.0sp3,使用:

http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
Olepro32.dll   5,0,4230,1
Mfc42.dll     4,21,0,7303
Msvcrt.dll     5,0,0,7303
				

VC 6.0,使用:

http://activex.microsoft.com/comtrols/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
Olepro32.dll   5,0,4261,0
Mfc42.dll      6,0,8168,0
Msvcrt.dll     6,0,8168,0
				


注意,4.2 和 6.0 之間的所有 MFC 版本均使用 Mfc42.cab。此 .cab 文件總是包含最新版本的 DLL,因?yàn)樗鼈兪窍蚝蠹嫒莸摹H绻皇褂酶叩?MFC 版本進(jìn)行編譯,則您可能不想指定最新的文件版本。這樣做可能會(huì)導(dǎo)致下載不必要的 MFC DLL。

參考
有關(guān)更多信息,請(qǐng)?jiān)L問下面的 Microsoft Developer Network (MSDN) 網(wǎng)站: 打包 ActiveX 控件http://msdn.mi...

有關(guān)更多信息,請(qǐng)?jiān)L問下面的 Microsoft Developer Network (MSDN) 網(wǎng)站:
打包 ActiveX 控件
http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/packaging.asp?frame=true (http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/packaging.asp?frame=true)
ActiveX 控件的安全初始化和腳本編寫
http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp?frame=true#iobjsafe (http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp?frame=true#iobjsafe)
使用 Microsoft Authenticode 技術(shù)進(jìn)行代碼簽名
http://msdn2.microsoft.com/en-us/library/ms537358.aspx (http://msdn2.microsoft.com/en-us/library/ms537358.aspx)
使用 ActiveX 控件自動(dòng)完成網(wǎng)頁(yè)
http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/tutorial.asp?frame=true (http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/tutorial.asp?frame=true)
有關(guān)更多信息,請(qǐng)單擊下面的文章編號(hào),以查看 Microsoft 知識(shí)庫(kù)中相應(yīng)的文章:
264570? (http://support.microsoft.com/kb/264570/ ) INFO:網(wǎng)絡(luò)廣播:Internet 組件下載是如何實(shí)現(xiàn)的?

這篇文章中的信息適用于:
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 專業(yè)版
  • Microsoft Visual C++ 5.0 標(biāo)準(zhǔn)版
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 5.0
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区视频免费在线观看| 亚洲国产一区视频| 亚洲国产欧美久久| 午夜精品在线| 一本久久综合亚洲鲁鲁| 在线日韩av片| 精品av久久707| 国产欧美一区二区精品秋霞影院| 欧美激情中文字幕乱码免费| 久久久久久国产精品mv| 欧美一区二区三区在线免费观看| 99re视频这里只有精品| 亚洲精品日日夜夜| 91久久精品久久国产性色也91| 久久综合电影一区| 在线欧美影院| 亚洲国产精品电影在线观看| 在线免费观看视频一区| 在线观看三级视频欧美| 红桃视频欧美| 亚洲国产精品久久久久婷婷884| 在线日韩av| 久久久久久久国产| 久久精品日韩欧美| 久久视频一区| 欧美电影美腿模特1979在线看| 欧美精品不卡| 欧美三级电影一区| 国产精品入口尤物| 国产一区二区三区日韩| 国语精品一区| 亚洲精品日韩欧美| 亚洲制服av| 久久国产一区二区三区| 久久频这里精品99香蕉| 欧美国产视频在线| 一本一本久久a久久精品综合妖精| 亚洲永久字幕| 久久婷婷人人澡人人喊人人爽| 欧美精品免费观看二区| 国产美女精品| 亚洲精品在线视频| 欧美中文在线观看国产| 欧美国产丝袜视频| 中文一区二区| 久久夜色精品亚洲噜噜国产mv| 欧美日韩国产综合视频在线观看中文| 欧美午夜三级| 亚洲国产高清自拍| 午夜精品免费在线| 亚洲激情成人在线| 欧美一区激情视频在线观看| 欧美激情免费在线| 国产一区二区三区在线观看免费| 91久久精品一区二区三区| 国产一区二区剧情av在线| 精品91久久久久| 亚洲裸体俱乐部裸体舞表演av| 亚洲精品久久久蜜桃| 中日韩美女免费视频网站在线观看 | 欧美韩日高清| 国产日韩av一区二区| 在线日韩视频| 亚洲深夜福利| 亚洲二区在线观看| 亚洲精选在线| 欧美11—12娇小xxxx| 欧美国产视频日韩| 国产在线播精品第三| 91久久精品美女| 久久精品亚洲一区二区| 久久久999| 一区二区三区产品免费精品久久75| 免费观看日韩| 亚洲国产精品第一区二区| 久久青草久久| 久久精品夜色噜噜亚洲aⅴ| 国产精品一级久久久| 国产精品久久久久久久久久尿| 亚洲精品在线一区二区| 欧美成人精品高清在线播放| 欧美一区二区三区四区在线观看地址| 欧美亚洲第一页| 亚洲一区二区三区精品动漫| 91久久嫩草影院一区二区| 蜜臀av国产精品久久久久| 亚洲成色999久久网站| 另类国产ts人妖高潮视频| 欧美伊人久久| 国产综合网站| 久久综合九色综合久99| 久久激五月天综合精品| 黑人操亚洲美女惩罚| 免费欧美高清视频| 久久综合九色综合欧美狠狠| 国产亚洲欧美一区在线观看| 久久激情久久| 久久婷婷色综合| 99热这里只有成人精品国产| 欧美国产日本韩| 欧美大片免费观看| 亚洲视频免费在线观看| 亚洲夜间福利| 国模套图日韩精品一区二区| 欧美69视频| 欧美日韩精品免费看| 亚洲欧美日韩区 | 亚洲综合好骚| 在线观看精品视频| 亚洲国产欧美一区二区三区同亚洲 | 亚洲一区二区在线观看视频| 国产精品尤物福利片在线观看| 欧美一区二区三区在线视频| 久久精品国产久精国产思思| 亚洲精品久久久一区二区三区| 一本久道久久综合婷婷鲸鱼| 国产日韩欧美91| 亚洲国产视频一区| 国产美女搞久久| 欧美国产乱视频| 国产精品狼人久久影院观看方式| 可以看av的网站久久看| 欧美日韩一区二区三区视频| 久久久五月婷婷| 欧美日本亚洲| 久久夜色精品国产欧美乱| 欧美精品自拍偷拍动漫精品| 久久精品国产亚洲aⅴ| 欧美高清视频在线| 欧美专区在线播放| 欧美日本三区| 免费人成精品欧美精品| 亚洲日本成人网| 欧美日本韩国在线| 亚洲高清久久| 久久综合九色综合久99| 性欧美精品高清| 欧美激情久久久| 久久一区亚洲| 国产欧美二区| 9久re热视频在线精品| 国产精品色在线| 老司机成人网| 欧美成人视屏| 亚洲日韩欧美视频一区| 久久国产一区二区三区| 亚洲欧美日韩一区二区在线 | 夜夜嗨av色一区二区不卡| 亚洲第一区在线观看| 性高湖久久久久久久久| 一色屋精品亚洲香蕉网站| 午夜欧美大片免费观看| 亚洲欧美日韩综合| 欧美日韩精品免费观看视频| 久久久久国产精品一区| 欧美日韩在线观看一区二区三区 | 欧美激情无毛| 亚洲欧美日韩成人高清在线一区| 欧美日韩国产一区精品一区 | 欧美.www| 亚洲国产精品久久| 亚洲精品视频一区| 女人香蕉久久**毛片精品| 免费中文字幕日韩欧美| 亚洲成人自拍视频| 美女日韩欧美| 亚洲激精日韩激精欧美精品| 日韩视频欧美视频| 欧美日韩国产高清视频| 亚洲视频久久| 久久久久久久久久久一区| 国内外成人免费视频 | 久久综合图片| 在线播放不卡| 欧美国产一区二区在线观看| 日韩视频一区二区三区在线播放| 亚洲免费观看高清完整版在线观看熊| 欧美激情一区二区三区高清视频| 亚洲人成久久| 欧美一区精品| 好吊妞这里只有精品| 麻豆精品91| 一本色道久久综合精品竹菊| 欧美一区二区三区免费在线看| 欧美一区永久视频免费观看| 久久综合精品国产一区二区三区| 国产欧美一区二区三区另类精品| 香蕉久久夜色精品| 一本色道久久综合亚洲精品不卡| 欧美日韩国产综合新一区| 国产欧美日韩在线播放| 久久久亚洲人| 99www免费人成精品| 欧美国产日韩一区二区在线观看| 性18欧美另类| 亚洲一二三级电影| 亚洲精选成人| 影音先锋欧美精品| 国产美女精品免费电影| 欧美日韩国产综合视频在线|