mobile.365-838.com[转]VC2005打开发MFC ActiveX ocx控件到公布到.net网站的任何经过

By admin in mobile.365-838.com on 2018年9月18日

01

太阳非常烦,屋里显得更为清楚。这段日子,我为此《白夜行》打发时间,断断续续一健全左右,看了了近六百页的长篇小说。原本计划每日20页,利用一个月日看罢,但坐书的类不同,一本书代表一则故事,情节引人入胜,便不自觉地怀念如果一举看罢。

自身之苍天里无阳光,总是黑夜,但连无暗,因为发物代替了太阳。虽然尚未阳光那么清楚,但针对自家吧都够。

随即是开被女主雪穗所说,我尝试理解当下句话背后的涵义,“那个东西”便是男性主人翁桐原。从小至好,他偷偷地以洗穗身旁保护着它,那不叫爱,倒像是赎罪,为他父亲所发之罪名。然而,在巡警将逮捕他时时,他摘自杀,用那么把剪刀捅在了心里。这将剪刀正是他既于心上人剪出一男一女的亚人数带入手照,男孩带在帽子,女孩头顶系正在大大的蝴蝶结(书皮封面)。男女主自始至终没有一样句对白。

本文转自:http://www.cnblogs.com/gengaixue/archive/2010/08/13/1799112.html

02

即本开尽吸引我之片段是作者东圭野吾形容眼神与笑容与轻微动作的讲述。

嘴角挂在不明所以且让人反感的笑脸;脸部纠结的笑颜;嘴角露出浅浅的一颦一笑;

那种冰冷的,观察事物般的眼神,霎时让人口备感阵阵寒意;

那种犹如在如斤论两的视力让友彦略发难过;

它的眼光如复印机的曝光灯一般,把他们快速地从头到脚扫描了扳平全套;

他的眼底噙着意外的狠劲;

脸庞堆满工作人的心心相印笑容;(原来做工作的食指的笑笑,是专职笑容)

现发挥想象力的眼力;意味深长的眼神;能迸发穿人身体一般锐利的眼力;以眺望外国风景般的视力;眼神里掺杂在奇怪和惊讶,但没有轻视;

他的眼眸射来他在认真思考时才会生之净;

外的身上有相同种植不许别人触碰这个话题之气场;

人脸及身体还圆滚滚的,有一样股平民气质,正而外表被丁之记忆,那是单勤奋的人头。(怎么感觉当游说我?)

外深爱这个家不更换的满贯(纳尼,什么破?我作作看无亮堂的楷模);

 

03

即仍开尽受丁头疼的凡各种人名的记,全书共十三章,一个段一个故事,一个故事来相应的主。如果不克清晰书中人物之间的涉及,是颇不便打懂故事背后的涵义。每看无异回,我会把新出现的人士划出并以就签纸上开展记录。另外,书被之人物均为四字命名,所以在书中不同地方出现与一个总人口之讳时,要么就发姓,要么就名,总误以为是鲜单人口的名字。建议大家看开常常,对名字进行简要记录,好处颇多。

开篇语:最近在弄ocx控件发布暨asp.net网站上行使,就是用户在使过程中,自动下载安装ocx控件。(此文章吧是总了网上广大口写的篇章,我只是汇总一下,加上有的友好的事物,在这边谢谢所有在网上载相关内容之爱人等。)

04

最好欣赏作者前卫的理念,这仍开于2008年生第一版本,作者曾经出口到了人工智能AI,股票热潮,信息就是是金钱的超前观念。要明白人工智能是近年来有限年在炎黄才生气了之,那说明日本较中国进步了许多年啦!书被还关乎了泡沫经济,计算机技术,盗取机密,化学药品氯化氢的用途,高尔夫球专业术语等等,作者知道的东西最好多尽多。也恰好因为懂得的大半,所以他才写起了双重多悬疑类小说。

于结尾一刻揭秘,道来了自身莫想过之谜题。小时候,弑其父亲,其母,胆子忒大了过!我在怀念警察何时会将他们办呢?男主死了,女主的数该去往乌吧?

ActiveX控件用于Web的长河是用控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并于用户机器上登记,以后便可每当用户之浏览器上运行。控件下充斥同不好后就是驻留在用户本地机械及,下次再度拜同的主页时,可不再下充斥该控件,而是径直运行用户本地的控件。这里控件容器就是浏览器,用户不欲经过浏览器调用控件的性或方式。因此,开发面向Web的ActiveX控件比出桌面的控件还要简单些,所复杂的凡何等以该控件很好地嵌入主页,使用户能够正常浏览。下面介绍者问题。

一.        创建MFC ActiveX项目

1.       打开VS2005新建MFC项目。这里我们取名为“ActiveXDemo”。

mobile.365-838.com 1

 

2.       输入项目名称为“ActiveXDemo”和路位置。点击“确定”按钮,打开向导对话框。

mobile.365-838.com 2

WoSign 免费供的时戳服务URL:
http://timestamp.wosign.com/timestamp

    
时间穿服务大关键,添加时间戳后,即使你的代码签名证书已经过,但出于您的代码是在证明有效期内签约的,则时间戳服务保证了这个代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经晚点,您也管需另行签和再发布就签的代码。

3.       选择“控件设置”选项卡,具体装可参看达图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。

 

二.        添加控件方法

VC2005会为咱自行创建好MFC
ActiveX程序框架,我们要吃该ActiveX控件添加方法即可。现在我们吃控件添加一个“AddFun”方法,这个法是拿少独数相加并回到结果。

1.       点击“视图”,打开“类视图”窗口。

mobile.365-838.com 3

2.       展开“ActiveXDemoLib”项,选中“_DActiveXDemo”项。点击鼠标右键,选择“添加”下的“添加方法”。

mobile.365-838.com 4

 

3.       打开添加法向导窗口。因为咱们是长一个加法方法,所以我们装的回到路也LONG型,方法名设为AddFun,添加两个LONG类型参数Add1,Add2。

mobile.365-838.com 5

 

 

4.       其它为默认设置,点击“完成”按钮完成长方法。接下来我们开辟“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。

mobile.365-838.com 6

5.       打开代码视图,我们会发觉VC2005既为咱上加了一个“AddFun”方法,我们在措施外补充加“return Add1 +
Add2;”语句。

mobile.365-838.com 7

 

 三、MFC Activex 安全问题:

 1、在默认环境下,编译的MFC
Activex控件,只能以地头代码中运作,即在http://localhost/xxx/xxx.htm中执行,而在http://127.0.0.1/xxx/xxx.htm中提示无相关属性,需要设置其初始化和脚本运行的安全性

  ActiveX以远程IE页面上推行,需要实现安全接口。

  在ATL写的ActiveX中,用IObjectSafety。

  http://support.microsoft.com/kb/168371/en-us

  于MFC写的ActiveX中,直接改动注册表。

  http://support.microsoft.com/kb/161873/en-us

  mfc实现之ocx,要以app实现文件被包括个别只文本:

 在ActivexDemo.cpp 文件被落实以下方式

 

 

mobile.365-838.com 8mobile.365-838.com 9代码

#include “stdafx.h”
#include “ActivexDemo.h”
#include <comcat.h>    
#include <objsafe.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CActivexDemoApp theApp;

const GUID CDECL BASED_CODE _tlid =
        { 0x344B8576, 0xAB2C, 0x4D38, { 0xAE, 0x7, 0x73, 0x74, 0x22, 0x89, 0x72, 0xEA } };
const WORD _wVerMajor = 1;
const WORD _wVerMinor = 0;

// CActivexDemoApp::InitInstance – DLL 初始化

BOOL CActivexDemoApp::InitInstance()
{
    BOOL bInit = COleControlModule::InitInstance();

    if (bInit)
    {
        // TODO: 在是添加而自己的模块初始化代码。
    }

    return bInit;
}

// CActivexDemoApp::ExitInstance – DLL 终止

int CActivexDemoApp::ExitInstance()
{
    // TODO: 在斯添加你自己之模块已代码。

    return COleControlModule::ExitInstance();
}

// 创建组件种类    
HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription) 
{    
    ICatRegister* pcr = NULL ;    
    HRESULT hr = S_OK ;    
    hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);    
    if (FAILED(hr)) return hr;    
    // Make sure the HKCR\Component Categories\{..catid…}    
    // key is registered.    
    CATEGORYINFO catinfo;    
    catinfo.catid = catid;    
    catinfo.lcid = 0x0409 ; // english    
    // Make sure the provided description is not too long.    
    // Only copy the first 127 characters if it is.    
    int len = wcslen(catDescription);    
    if (len>127) len = 127;    
    wcsncpy(catinfo.szDescription, catDescription, len);    
    // Make sure the description is null terminated.    
    catinfo.szDescription[len] = ‘\0’;    
    hr = pcr->RegisterCategories(1, &catinfo);    
    pcr->Release();    
    return hr;    
}  

// 注册组件种类    
HRESULT RegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
 {    
    // Register your component categories information.    
    ICatRegister* pcr = NULL ;    
    HRESULT hr = S_OK ;    
    hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);    
    if (SUCCEEDED(hr)) {    
      // Register this category as being “implemented” by the class.    
      CATID rgcatid[1];    
      rgcatid[0] = catid;    
      hr = pcr->RegisterClassImplCategories(clsid, 1, rgcatid);    
    }    
    if (pcr != NULL) pcr->Release();    
    return hr;    
}    
// 卸载组件种类    
HRESULT UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
 {    
    ICatRegister* pcr = NULL ;    
    HRESULT hr = S_OK ;    
    hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,    
            NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);    
    if (SUCCEEDED(hr)) {    
      // Unregister this category as being “implemented” by the class.    
      CATID rgcatid[1] ;    
      rgcatid[0] = catid;    
      hr = pcr->UnRegisterClassImplCategories(clsid, 1, rgcatid);    
    }    
    if (pcr != NULL) pcr->Release();    
    return hr;    
}    
STDAPI DllRegisterServer(void) 
{    
    HRESULT hr;    
    AFX_MANAGE_STATE(_afxModuleAddrThis);    
    if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))    
        return ResultFromScode(SELFREG_E_TYPELIB);    
    if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))    
        return ResultFromScode(SELFREG_E_CLASS);    
    // 标记控件初始化安全.    
    // 创建初始化安全组件种类    
    hr = CreateComponentCategory(CATID_SafeForInitializing, L”Controls safely initializable from persistent data!”);    
    if (FAILED(hr)) return hr;    
    // 注册初始化安全    
    hr = RegisterCLSIDInCategory(BASED_CODE _tlid , CATID_SafeForInitializing);    
    if (FAILED(hr)) return hr;    
    // 标记控件脚本安全    
    // 创建脚本安全组件种类    
    hr = CreateComponentCategory(CATID_SafeForScripting, L”Controls safely scriptable!”);    
    if (FAILED(hr)) return hr;    
    // 注册脚本安全组件种类    
    hr = RegisterCLSIDInCategory(BASED_CODE _tlid , CATID_SafeForScripting);    
    if (FAILED(hr)) return hr;    
    return NOERROR;    
}    
// DllUnregisterServer – Removes entries from the system registry    
STDAPI DllUnregisterServer(void) 
{    
    HRESULT hr;    
    AFX_MANAGE_STATE(_afxModuleAddrThis);    
    if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))    
        return ResultFromScode(SELFREG_E_TYPELIB);    
    if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))    
        return ResultFromScode(SELFREG_E_CLASS);    
    // 删除控件初始化安全入口.    
    hr=UnRegisterCLSIDInCategory(BASED_CODE _tlid , CATID_SafeForInitializing);    
    if (FAILED(hr)) return hr;    
    // 删除控件脚本安全入口    
    hr=UnRegisterCLSIDInCategory(BASED_CODE _tlid , CATID_SafeForScripting);    
    if (FAILED(hr)) return hr;    
    return NOERROR;    
}  

 

现今控件便得以打登记时便注册也安控件了。

2、设置项目属性 将配备项目设置成静态库(.lib)

mobile.365-838.com 10

 

3、       最后生成项目,ocx控件便时有发生了。 

 

 ActiveX打包与宣布

当VS2005还是VS2008安后意识路**VC7\Common7\Tools\Bin\下发生诸多略器,我本着含Cert的文本较感兴趣。经过研究,发现凡是关于证明与签约的,当然,该证件未为证明认证部门承认。下面列出这些工具与自家之运用体验。
1。Makecert.exe —证书创建工具
2。Cert2Spc.exe —发行者证书测试工具
3。Signcode.exe —文件签字工具(VS2008带来的凡signtool)

平、ActiveX发布步骤

当此间大概说明下,打包activeX需要制造证书,具体用到makecert 、cert2spc
、signtool
这三独VS提供的家伙,工具在VS文件夹里面,以下制作过程要在工具所在的文本夹下就!
1、单击”开始”–>”运行(R)”–>输入”cmd”–>回车–>进入及操作的控件所在的目录(需要将方所说的工具,和ocx控件放到一个文件夹下);
2、创建PVK文件(私人密匙文件),在指令执行吃输入”makecert -sk demo demo.pvk
-n CN=XXXXXXX公司”,然后回车;

sk-表示主题的密钥容器位置,ss-主题的证件存储名称,
n-证书颁发对象,r-证书存储位置;

3、创建CER文件(公司关系),在指令执行遭输入”makecert -sk demo.pvk
demo.cer”,然后回车,如图8所著,若出现”Successed”提示,则会在E:\
demo目录下生成demo.cer文件;

sk-代表主题的私钥容器位置,is-颁发者的证明存储名称,
n-证书颁发对象,ic-颁发者的证件存储位置,-$-授权范围(用于代码签名);

4、创建SPC测试软件出版商证明书,在指令执行中输入”cert2spc demo.cer
demo.spc”,然后回车;

5、创建INF文件,用笔记本编辑以下信息:

 

mobile.365-838.com 11mobile.365-838.com 12代码

[version]    

signature=”$CHICAGO$”

AdvancedINF=2.0

[Add.Code]

ActivexDemo.ocx=ActivexDemo.ocx

[ActivexDemo.ocx]

file-win32-x86=thiscab    
//告诉ie到乌去赢得这个dll,file一共包括三只有,第一片段是file,这个永远都是这样的(至少目前以来);第二部分报告声明支持之OS,win32表示windows,mac就是苹果MAC  OX了;第三局部是CPU类型,比如说x86、  ppc  (Power  PC)、  mips或者alpha了   
//其中“thiscab”是一个根本字,表示 CAB 包含此 DLL,也可通过点名同条绝对要相对路径,从一个 HTTP 位置下载所需要的 DLL,   
例如:  file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL   
RegisterServer=yes    

clsid={468E4531-F890-47EC-8368-3BDA4448FF08}    
//“clsid”是将安装的控件的 CLSID  
DestDir=11    
//它的值是dll将要存到本地硬盘的职务,如果她的价是10,则拿dll放到\Windows或者\WinNT下;如果是11,则放到\Windows\System或者\WinNT\System32下;如果不指定其他 DestDir(典型气象),则代码安装于一定的 OCCACHE 目录中。  
FileVersion=1,0,0,1
//说明了atl90.dll的本子号   

  

6、创建CAB文件,在指令执行吃输入”cabarc -s 6144 n demo.cab atl90.dll
Polygon.dll demo.inf”,-s
选项表示在压缩文件中保存用于代码签名的空间,n命令指定想创建 CAB
文件,然后回车;

7、使用Code Signing Wizard签署一个CAB文件,在支配高输入signtool
signwizard 进入到signtool窗体中;

mobile.365-838.com 13

8、单击”下一样步(N)”按钮,选择要进行数字签名的还早已做成CAB包的文件Dome.cab文件;

mobile.365-838.com 14

9、选择好CAB包后单击”下同样步(N)”按钮,在挑想使之签约类型里摘”自定议(C)”并单击”下一样步(N)”按钮;

mobile.365-838.com 15

10、接下单击”从文本选择(F)”按钮,选择刚刚制作的demo.cer;

mobile.365-838.com 16

11、在单击”下同样步(N)”,然后选取”CSP中的私钥(K)”;

mobile.365-838.com 17

12、在单击“下一致步(N)”按钮,然后在散列算法中选取“shal”,并单击“下一致步(N)”按钮。

mobile.365-838.com 18

13、在”证书路径中之证明”中选取”证书路径中之拥有证,包括根证书(C)”,在”其它证书(可选)”中甄选”包括以偏下PKCS
#7
证书(.p7b)文件被的证件(P):”,并单击”浏览(R)…”按钮选择demo.spc文件,选择了晚单击”下同样步(N)”按钮;

mobile.365-838.com 19

14、接下去当弹出的”数据描述”窗口被输入公司的称以及网址并单击”下一样步(N)”按钮;

mobile.365-838.com 20

15、现大部卖工作且早已到位,在接入下的平步当中是可选的操作,其意图才是为CAB加入时间穿,此步骤完全可免做,VeriSign: 
http://timestamp.verisign.com/scripts/timstamp.dll;

mobile.365-838.com 21

16、完成,单击”下同样步(N)”按钮便可来数字签名向导的末尾一步,即操作总览,如图26所著,单击”完成”按钮便只是特别功告成;

 mobile.365-838.com 22

 

下面是微软代码签名证书(.pvk/.spc)签名指南的演示

 

 

本使用指南演示如何使WoSign代码签名证书来为微软代码签名,Thawte和VeriSign代码签名证书也是运用相同措施,只是以不同之日戳URL。

    
用户在在线申请代码签名证书时见面转证书私钥文件,如:myCert.pvk,而代码签名证书成功发布后底证明文件呢公钥文件,如:myCert.spc,又如:软件发行证书(Software
Publishing Certificate) 。
代码签名证书一般都是用公钥和私钥分离的星星个文件方式,适合吃 DOS
命令行方式的代码签名。如果您而要把代码签名证书导入到Windows证书存储区中,从而简化签名操作,请参考:差证格式转换指南。

     WoSign代码签名证书的根证书链为:
UTN-USERFirst-Object- WoSign Code
Signing Authority

    使用微软的 SignCode.exe
就可针对微软的代码进行签字,如果您没有这文件,点击
这里下载。 Signcode.exe 可以下 DOS
命令行方式贯彻签约,我们推荐用户用数字签名向导方式,简单方便。请留心:如果您支之ActiveX为IE加载项,请先数字签名每个CAB文件中的.dll和.ocx等公事,再将这些文件包成.cab文件后还数字签名.cab文件,以担保有IE加载项都吃IE验证和亲信,否则会显示“未证明”而可能影响健康运作。

    具体签名向导过程如下:

     (1) 运行 Signcode.exe , 要求你选择要签的公文,支持:可执行文件
(*.exe; *.dll; *.ocx) ; Cabinet 打包文件 (*.cab) 和目录文件
(*.cat) ,如下图 1 所示 ( 如: TestSign.cab)
,请留意:如果签名的文件已来数字签名,则会让新的签字覆盖:

mobile.365-838.com 23

(2) 点击“下一样步”后,如下图 2
所示,会要求你选择“签名类型”,缺省的“典型”签名类型;请捎“自定义”
签名类型:

mobile.365-838.com 24

 (3) 如下图 3
所出示,点击“从文本选择”签名证书 ( 公钥文件 ),如: WotoneCS.spc :

mobile.365-838.com 25

   (4) 点击“下一样步”后,如下图 4
所出示,会要求你选择私钥文件,如: WotoneCS.pvk ,其他参数不用动:

mobile.365-838.com 26

  (5) 点击“下一致步”后,如下图 5
所著,会提醒要求输入私钥密码:

mobile.365-838.com 27

   (6) 点击“下一致步”后,如下图 6
所显示,会唤起要求选择散列算法 ( 摘要算法、缩微图算法 ) ,缺省为 sha1
,也足以选 md5 :

mobile.365-838.com 28

(7) 点击“下一致步”后,如下图 7
所展示,选择什么关系包括到数字签名中,直接点击“下一样步”即可,即挑短省之席卷根证书:

mobile.365-838.com 29

(8) 如下图 8
所显示,要求填写该签名代码的机能描述,推荐一定要认真填写,因为这个音将会见于最终用户下载者代码时显示,有助于最终用户了解之代码的效能为确定是否下载安装。第一推行“描述”是借助是代码的效力文字描述,第二实施“
Web
位置”则吃最终用户点击文字描述来详细摸底这代码的成效与采取方法齐,本演示着的“
Web 位置”为WoTrust代码签名证书简介页面:

mobile.365-838.com 30

 (9) 点击“下同样步”后,如下图 9
所出示,选中“将时间戳添加到数量中”,请以:

 

WoSign 免费提供的年月穿服务URL:
http://timestamp.wosign.com/timestamp

    
时间戳服务十分重要,添加时间穿后,即使你的代码签名证书已经过,但由于你的代码是于关系有效期内签约的,则时间穿服务包了此代码仍然可信,最终用户仍然可放心下载,使得即使代码签名证书已经晚点,您为随便需还签和重新公布就签的代码。

mobile.365-838.com 31

(10) 点击“下一样步”后,如下图 10
所出示,会唤醒已经好数字签名向导,点击“完成”后尚见面提醒您输入私钥密码,就到位代码签名证书的代码签名。

mobile.365-838.com 32

(11) 现在,需要运用 chktrust.exe 来检验已经签约的代码, chktrust.exe
文件已打包在 signtool.rar中。进入
DOS 命令提示符,并跻身都签的文件所在目录 ( 如:
d:\sign\TestCA.cab) ,键入命令: chktrust testcs.cab
,则会显示实际采用时当 IE 浏览器下载页面的状态,如下图 11 所展示,对于Win
XP操作系统,会显软件名称和发行者名称,其中软件名称即使是你在第(8)步输入的叙说,点击是名即使链接到您在第(8)步填写的网址,而点击发行者名称,则会来得你的签字信以及时穿信息。对于Win2000操作系统,则有些有不同,第
1
行的红线部分即是时空穿记录之签约时的本地时间,请小心:此日不是取得签名电脑的时光,而是提供时间戳服务之服务器计算出来的签约电脑安装的八方时区的本土时间。第
1 行蓝色文字虽是在第 8 步着输入的讲述文字,点击是蓝色文字虽可看在第
8 步着输入的 Web 描述页面。第 2
行蓝色文字虽也该代码的发行者,也尽管是代码签名证书之申请者(拥有者)(
如:深圳市沃通电子商务服务有限公司) ,点击可以翻证书之详细信息;第 2
行有红下划线部分显得“发行商可靠性由 WoSign Code Signing Authority 验证
”就是这代码签名证书之关系颁发者。

mobile.365-838.com 33

12) 点击“是”或“运行”,则会唤醒“ TestSign.cab: Succeeded ”表示代码
TestSign.cab
签名验证有效,可以停放网站及了。请小心:签名后的CAB文件放到网站及要采用
object 方式。

请注意:不可知只是签约CAB文件,CAB包着颇具DLL文件还如事先签后再也装进,再签字CAB文件,否则IE浏览器会显示也“未认证的发行者”而影响正常下,甚至杀毒软件会当是毒而深受删除!如下图所显示之实在案例:

 

mobile.365-838.com 34

 

以Web页中进入ActiveX 控件

于改动了IE的安设置后,依然未克调用控件的方式,需要以访问的站点设置也“受信站点”,则正能够健康下控件
以<html> 和<head>之间插入
<!– saved from url=(0017)http://localhost/ –>
虽以IE窗口上方不见面弹有黄色提示条 。

  于HTML页面被使ActiveX控件包含三个基本操作:将控件放入HTML中;将该控件下充斥于用户;在用户机器及安装该控件。如果仅是针对性IE用户,在HTML中插入ActiveX控件便比较简单;如果以兼顾IE和Netscape用户,则只要举行重新多干活。大家知道,HTML文件由文本及各种标志(tags)组成,ActiveX
控件对于IE在HTML中之表明是<OBJECT>,该标记有几个根本的参数特性,它们是:

  1.ID:为控件提供一个标识名称,为HTML代码提供相同栽访问该控件的章程。

  2.CLASSID:是该控件唯一的UUID,告诉IE装入哪个目标。如果采用曾开发好之控件,它的CLASSID可以由此调用Win95要NT下的施用Regedit来查找。从开始菜单中运作该次,展开HKEY_CLASSES_ROOT项,可以看出本字母顺序排列的注册表,找到需要动用的控件名,例如WClnt,展开时可看出一个CLSID文件夹,里面就是是该控件的CLASSID。

  如果是好之所以VC开发控件,该UUID可以于ActiveX控件项目面临的ODL(对象描述库)文件中找到;通过翻控件的切近信息注释来稳定一定控件的UUID,例如,要找到CMyControl控件的UUID,则需要找到以下代码:

  // Class information for CMyControl

  [uuid
(051C4748-1262-11D2-87C1-00A024D948FB),

  licensed,

  helpstring(“CmyControl Control”),
control ]

  uuid后面括号中的情即是该控件的UUID。

  3.CODEBASE:如果当用户机器及从来不控件的目前版本,该参数告诉用户浏览器在何而找到要下载的控件和流行版本号.当控件作了改后,可以再次改版本号强制用户更下载。

  4.PARAM:该标记用于安装控件的开端属性值,它发出点儿个特点:Name和Value,即属性名称和属性值。

  此外还有一对标记,如:Width代表该控件所占据的增幅,Height表示高度等,总体来说,这样一个插控件的HTML代码和插Java
Applet的HTML代码非常相似。

  下面是一个嵌有ActiveX控件的HTML代码示例:

 

ID=“CMyControl”

CLASSID=“clsid:051C4748-1262-11D2-87C1-00A024D948FB

CODEBASE=“http://www.mysite.com.cn/ocxdir/mycontrol.ocx#version=1,0,0,1”

WIDTH=400

HEIGHT=200

ALIGN=center

HSPACE=0

VSPACE=0

  如果指望控件还能够当Netscape中运作,除了Netscape需加装插件外,HTML也使加有附加标记,下面的例子中EMBED段就是吗Netscape加上的。如果使用MFC开发OCX控件,则少数用户率先糟糕造访时除了下载OCX文件外,还要下载相应的MFC
DLL,下载量变死,这时可拿相关文件在服务器端打包改成可以在客户端起解压安装之CAB文件。经过改动后的HTML代码段如下:

<ALIGN=“CENTER” CLASSID=“clsid:

7BCA18C6-2178-11D2-87C1-00A024D948FB”

WIDTH=“1200” HEIGHT=“900” ID=“marquee”

CODEBASE=“http://218.168.188.188/scadaweb/

WClnt.cab#version=1,0,0,1”>

<EMBED
ALIGN=“CENTER”CLASSID=“clsid:7BCA18C6- 2178-11D2-87C1-00A024D948FB”

WIDTH=“1200” HEIGHT=“900” ID=“marqueequot;”

CODEBASE=“http://218.168.188.188/scadaweb/

WClnt.OCX#version=1,0,0,1”

TYPE=“application/oleobject” >

 

 

 

 

实时动态页面的实现方案

  对实时动态页面的求多出为一些要求自动更新实时数据的运用被,如电网监控、股市监测等。具体求凡:用户仅仅需要选择希望浏览的图纸,但管需与操作,该图形就会因实时数码不断更新,用户总能观察到最新情况。

  要促成上述意义,结构及起一定量栽方案:一栽是安一个中介服务器,该服务器作为控件和后台系统信息交流之中介;另一样种是休使中介服务器,但在供实时数据的后台服务器上留下有供控件通信用的多寡接口,控件可以一直由后台服务器上定时收获当前实时数据。按数据提供方划分呢出星星点点种:一栽是由于客户端定时为服务器发出请求,指明要的实时数据,服务器收到请求后以满足请求的动态数据发送至相应客户;另一样种是客户端只请一赖,服务器端便定时用满足请求的实时数据传客户端,直到客户转换要显的图样或终止刷新。上述各方案还来夫亮点和局限,在采用被不过考虑实际情况用相应方案。

  工作流程也:用户优先从Web服务器上下载包含ActiveX
控件的网页,控件随即在客户机上注册运行,并由此Winsock同中介服务器或直接与提供实时信息之网,如股票信息网相连接,定时取得动态实时数据,并刷新显示。在这体系中,客户有一定量长长的线路获得信息,一长凡暨Web
Server的连日,从当下漫漫线达用户访问主页;另一样条就是是控件和后台信息网的连续,从马上漫长线路上用户可看实时数据。后同长路用Winsock建立,传输速度远高于前无异漫漫线路,且控制灵活、效率高,不与主页下充斥争资源。通过就漫漫路,用户甚至好传递远程控制信息实现遥控操作。

利用MFC开发ActiveX控件

  以VC5.0开发的这种控件,功能而扩展性强,理论及单独的VC5.0程序有所的力量,该控件都能够实现,例如控件直接绘制浏览器,可以下OpenGL等图库,图形图像功能强大。实时数据刷新频率理论及只是达到毫秒级,用户通过鼠标可以实现各项交互操作,如旋转、缩放,图2就是平等帧GL图形,并发出一个缩放工具条进行缩放操作。如果是以处理器上来看,可以看看就几只三维图在相连转动。

  应该说,较好之开发工具可径直用API编程或下ATL模板库,利用MFC开发ActiveX控件不是一个好之挑选,因为控件运行需要MFC
DLL的支持。假如客户机器及未曾这些类库(这种气象十分少,但真存在),第一潮下载就要花数时日。不过对此熟悉MFC的开发员来说,这些题材相对MFC提供的好来说都是可忽略的。

  由于VC5.0对ActiveX控件的开提供了重重好,所以开一个ActiveX控件并无像许多人数想象着之那窘迫复杂,通过VC
5.0底AppWizard,实现控件的主类从ColeControl类派生出,该类则是CWnd的一个子类,所以你可以像对窗口类编程一样对这个主类编程。为了兑现者提及的法力,首先必要重载它的OnDraw函数加入消绘制的对象,加入Winsock类(CSocket或CAsyncSocket),以实现与后端数据服务器底通信。如果欲用OpenGL绘制丰富多彩的立体图,则只要初始化GL环境。其他的工作就是在于用户如何决定次的调度,使得各个职能都能健康工作都和另部分常规通信。此外,后端服务器程序也如增加对应为该控件的接口。

  这样的一个先后编译通过后,就变成一个可用于Web的控件,后缀名是OCX。按照前面叙述的方式以拖欠OCX置入主页,基本的劳作就完成。

  综上所述,利用VC5.0开发ActiveX控件用于Web浏览,主要有以下几单特征:

  1.行使Winsock的通信机制,速度快、控制灵活、效率高;

  2.控件采用VC5.0编制,功能可扩展性很强;

  4.控件第一涂鸦下充斥虽然稍费时间,但下载后就是以用户机上注册,以后可一直调用,速度效率都好;

  5.ActiveX技术是微软发展之第一,且曾改成当下软件发展之潮流所向,发展空间广阔;

  6.系统采用VC开发,可以用曾有些以C语言编制的系统,开发工作量大大减少。

  Web页面的开发要分为三类:静态Web页面、半动态Web页面以及Client端动态页面。本文重点论基于ActiveX
Control(控件)动态实时页面的开。

regsvr32 netshare.ocx        注册netshare.ocx控件

regsvr32 /u netshare.ocx    解除netshare.ocx控件的注册

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2018 mobile.365-838.com 版权所有