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

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| 女人香蕉久久**毛片精品| 美女精品在线| 亚洲电影第三页| 亚洲开发第一视频在线播放| 亚洲精品一区二区三区婷婷月 | 亚洲午夜在线视频| 在线一区二区日韩| 欧美在线播放| 欧美 日韩 国产在线| 欧美激情一二区| 亚洲视频一二区| 欧美一区精品| 欧美日韩国产成人在线观看| 国产酒店精品激情| 在线观看亚洲a| 亚洲一级电影| 久久中文字幕一区| 久久亚洲捆绑美女| 91久久中文字幕| 亚洲欧美国产三级| 久久综合给合久久狠狠色 | 欧美诱惑福利视频| 欧美成人69av| 国产美女一区| 日韩视频免费观看高清完整版| 午夜精品视频| 亚洲国产激情| 欧美一区二区私人影院日本 | 亚洲国产精品美女| 午夜在线电影亚洲一区| 亚洲第一精品福利| 亚洲欧美日韩国产| 欧美日韩国产色视频| 激情婷婷欧美| 欧美一区在线直播| 一区二区三区国产精品| 欧美h视频在线| 国产一区二区你懂的| 一区二区三区欧美| 亚洲国产免费看| 老司机精品视频网站| 国产亚洲欧美日韩日本| 亚洲永久免费观看| 日韩亚洲欧美一区二区三区| 老司机免费视频一区二区| 国产日韩欧美精品一区| 性欧美8khd高清极品| 一级日韩一区在线观看| 欧美精品一区视频| 久久gogo国模裸体人体| 国产精品www| 中国女人久久久| 亚洲精品国产精品久久清纯直播| 久久午夜电影| 亚洲国产精品999| 嫩模写真一区二区三区三州| 久久久久www| 在线观看国产精品淫| 免费视频一区二区三区在线观看| 久久精品人人| 在线看欧美视频| 欧美激情精品久久久久久大尺度| 麻豆精品91| 亚洲精品国产精品国自产观看| 欧美夫妇交换俱乐部在线观看| 久久婷婷色综合| 亚洲精品四区| 一区二区高清| 国产午夜亚洲精品理论片色戒| 欧美在线一二三| 开元免费观看欧美电视剧网站| 欧美日韩午夜剧场| 国产精品美女视频网站| 久久精品30| 欧美日韩中文字幕在线| 欧美激情一区在线观看| 伊人久久婷婷色综合98网| 午夜精品福利在线| 久久精品日韩| 亚洲高清在线观看| 香蕉视频成人在线观看| 久久久久免费视频| 亚洲丶国产丶欧美一区二区三区| 久久在精品线影院精品国产| 蜜臀av性久久久久蜜臀aⅴ| 精品51国产黑色丝袜高跟鞋| 亚洲欧美高清| 美女网站久久| 一本大道久久精品懂色aⅴ| 欧美日韩影院| 亚洲欧美中文日韩在线| 国产精品一区在线播放| 亚洲福利国产| 99视频精品免费观看| 一区二区三区视频观看| 国产精品夫妻自拍| 久久这里有精品视频| 99国产精品久久久久老师| 久久青草欧美一区二区三区| 亚洲视频一二区| 亚洲欧洲精品一区二区三区不卡| 今天的高清视频免费播放成人| 亚洲欧美网站| 亚洲欧美日韩国产一区二区| 亚洲精品国产视频| 国产午夜精品理论片a级大结局 | 性欧美办公室18xxxxhd| 国产精品一区免费观看| 欧美日韩免费看| 欧美女同在线视频| 欧美国产日韩一区二区| 欧美一级久久久| 久久国产精品久久精品国产 | 久久九九久久九九| 午夜精品久久久久久久久 | 欧美视频中文字幕在线| 欧美韩日一区| 久久精品免费看| 欧美一区二区三区在线视频| 亚洲欧美视频一区| 性欧美8khd高清极品| 亚洲网站在线播放| 久热爱精品视频线路一| 麻豆免费精品视频| 亚洲第一综合天堂另类专| 欧美二区在线播放| 欧美韩日亚洲| 一本色道88久久加勒比精品 | 亚洲黄色性网站| 亚洲久久成人| 欧美在线视频一区| 欧美日韩一区二区三区在线| 国产日韩精品视频一区| 亚洲国产成人久久综合一区| 一区二区三区四区五区在线| 欧美在线视频一区二区三区| 亚洲国产精品成人综合色在线婷婷| 中文av一区特黄| 亚洲欧美自拍偷拍| 久久影视精品| 国产午夜亚洲精品理论片色戒| 国产综合网站| 午夜精品久久久久久久99水蜜桃| 女生裸体视频一区二区三区| 亚洲一区bb| 欧美视频日韩| 亚洲视频在线观看三级| 欧美国产一区视频在线观看| 亚洲一区在线播放| 国产精品亚洲精品| 亚洲欧美日韩直播| 中文av字幕一区| 玖玖综合伊人| 久久人91精品久久久久久不卡| 国产农村妇女精品| 久久国产视频网| 久久婷婷综合激情| 91久久精品网| 亚洲国产精品毛片| 欧美国产日韩一二三区| 亚洲国产日韩欧美综合久久| 欧美激情a∨在线视频播放| 久久网站免费| 午夜精品视频在线观看一区二区| 午夜精品久久久久久久久久久久久| 欧美性大战久久久久久久蜜臀| 亚洲欧美在线网| 久久久久国产成人精品亚洲午夜| 狠狠色狠狠色综合日日五| 亚洲电影第1页| 国产午夜精品视频免费不卡69堂| 久久尤物电影视频在线观看| 欧美福利视频| 亚洲欧美另类国产| 久久综合影视| 久久精品72免费观看| 欧美日韩国产精品一区二区亚洲 | 久久伊人亚洲| 欧美亚洲三级| 欧美日韩精品一区| 久久精品日产第一区二区| 亚洲欧美欧美一区二区三区| 老鸭窝亚洲一区二区三区| 午夜精品999| 欧美日韩三区四区| 亚洲福利视频在线| 在线播放亚洲一区| 欧美在线首页| 久久久久国色av免费观看性色| 欧美日韩国产影片| 最新高清无码专区| 国产精品99久久久久久白浆小说|