将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装

将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装
将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装

将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装

我们打开淘宝等网站时,IE浏览器会提示安装空间,这个控件便是用于对用户名密码进行加密的ActiveX控件。如何在我们的站点上安装如此控件,让用户可以通过简单的点击便可方便使用我们的空间呢?

下面是如何让在你的站点上安装控件的方法。

--------------------------------------------------------------------------------

基础知识

html语言中Object标签

定义和用法

定义一个嵌入的对象。请使用此元素向您的XHTML 页面添加多媒体。此元素允许您规定插入HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码。 标签用于包含对象,比如图像、音频、视频、Java applets、ActiveX、PDF 以及Flash。object 的初衷是取代img 和applet 元素。不过由于漏洞以及缺乏浏览器支持,这一点并未实现。浏览器的对象支持有赖于对象类型。不幸的是,主流浏览器都使用不同的代码来加载相同的对象类型。而幸运的是,object 对象提供了解决方案。如果未显示object 元素,就会执行位于 之间的代码。通过这种方式,我们能够嵌套多个object 元素(每个对应一个浏览器)。

实例

向HTML中添加对象:

view plaincopy to clipboardprint?

width="100" height="50">

参考

https://www.360docs.net/doc/bc17556203.html,/tags/tag_object.asp

Windows中注册类ID:clsid

“通用唯一标识符”(UUID),用于标识COM 组件。每个COM 组件在Windows 注册表中都有自己的CLSID,以便让其他应用程序加载。

ActiveX控件CLSID的获取

在编译完成每一个ActiveX控件之后,系统会生成ocx.html文件,其中是调用该ActiveX控件的方法。该页面中有一个标签即为Object,其中有一行则记录着该ocx文件的CLSID,如下:

view plaincopy to clipboardprint?

ID="TopoSceneViewer"

WIDTH=800

HEIGHT=600

CLASSID="CLSID:321B84C8-3745-4AC9-BF04-55753F40CE63">

--------------------------------------------------------------------------------

创建cab文件

cab文件中需要包含一系列文件,其中.inf文件会告诉IE如何去安装这些文件。我们从.inf 文件开始怎么写inf

INF文件的组成有节(Sections),键(Key)和值(value)三部分。关键节有[Version]版本描述信息,主要用于版本控制。[Strings]字符串信息,用于常量定义。[DestinationDirs]定义系统路径信息。[SourceDisksNames]指明源盘信息。[SourceDisksNames]指明源盘文件名。[DefaultInstall]开始执行安装。[Version]版本描述信息,主要用于版本控制。[Strings]字符串信息,用于常量定义。

[DestinationDirs]定义系统路径信息。

[SourceDisksNames]指明源盘信息。

[SourceDisksNames]指明源盘文件名。

[DefaultInstall]开始执行安装。其它的节可以自定义

最开始一般是[Version]区:

[Version] signature="$XXXX$" AdvancedINF=2.0 [Version]

signature="$XXXX$"

AdvancedINF=2.0 "Signature"项定义了该INF文件需要运行在何种操作系统版本中。有$Windows NT$, $Chicago$, or $Windows 95$三个值供选择,一般选择$Chicago$即可。

接下来就是最重要的[Add.Code]区:

[Add.Code] Ctrl1.dll=C1Section Ctrl2.dll=Ctrl2.dll [Add.Code]

Ctrl1.dll=C1Section

Ctrl2.dll=Ctrl2.dll 前面是要下载的文件名,后面是对应这个文件的区域名,可以是任何名字,不过一般都是和文件的名字相同,这样方便维护。

还有需要注意是在[Add.Code]区出现的文件要根据依赖性进行排序,例如前面说的ctrl1.dll 要依赖于ctrl2.dll,则ctrl2.dll要出现在ctrl1.dll的前面。因为安装时是按照相反的顺序进行的,也就是说先安装ctrl2.dll,然后才是ctrl1.dll,哧哧,记清楚了,不要搞反了。

再接下来是各个文件的区域了

[Ctrl1.dll] file-win32-x86=thiscab RegisterServer=yes clsid={.....} DestDir= FileVersion=1,0,0,0 [Ctrl1.dll]

file-win32-x86=thiscab

RegisterServer=yes

clsid={.....}

DestDir=

FileVersion=1,0,0,0 [Ctrl1.dll]区域中的第一个file值告诉ie到哪里去得到这个dll,file一共包括三个部分,第一部分是file,这个永远都是这样的(至少目前来说);第二部分告诉声明支持的OS,win32表示windows,mac就是苹果MAC OX了;第三部分是CPU类型,比如说x86、ppc (Power PC)、mips或者alpha了。

file的值可以取三个一个URL、ignore和thiscab,如果是URL则说明到URL所在的位置去下;如果是ignore说明对于这种OS和CPU,不需要下载这个文件(ctrl1.dll);如果是thiscab很明显就在当前的cab文件中了。

接下来是RegisterServer,可以取两个值yes和no,如果为yes则说明ie要注册该dll,如果是no就不必了。+如果这里选yes,则需要指定clsid,否则clsid一行可以省略。+

再下来是DestDir,它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到\Windows或者\WinNT下;如果是11,则放到\Windows\System或者\WinNT\System32下;如果是空(就是没有值)则会放到\Windows或者\WinNT下的Downloaded Program Files目录下;

最后是FileVersion,这个就比较明显了,说明了ctrl1.dll的版本号。

其他部分详见参考文献。

创建cab文件

如果需要创建cab文件,首先需要Cabarc或者Makecab,它们随着Cabinet SDK的安装就有了,Cabinet SDK的下载地址是https://www.360docs.net/doc/bc17556203.html,/workshop/management/cab/cabdl.asp

Cabarc可以创建、查看或者解出cab里面的文件,而Makecab则只可以用来创建cab文件。制作cab文件时需要将所有的相关文件都包含进去,可以通过Depends(VC自带的)检查需要的文件。使用inf文件将这些东西都写进去。

inf搞法:inf文件描述cab中所有的ocx及dll文件,inf通过一些命名区域来提供需要的信息。

cabarc N ctrl1.cab ctrl1.inf ctrl1.dll cabarc N ctrl1.cab ctrl1.inf ctrl1.dll N表示要创建一个新的文件,ctrl1.cab是创建的文件名,ctrl1.inf是cab的inf,后而是需要加到cab 里的文件,可以使用通配符。

然后就可以将cab文件放到网页上了

参考

如何编写INF:https://www.360docs.net/doc/bc17556203.html,/sbdx/archive/2006/12/14/whatisinffile.html

如何写cab相关的INF:https://www.360docs.net/doc/bc17556203.html,/Doc?docid=0Aehzv88zbfy_ZGdncGdqczZfMjIxZHNnZDhtYzg&hl=zh_CN

--------------------------------------------------------------------------------

签名

申请证书

要使用到makecert工具,在VS2005目录下搜索可以搜索到。

在命令提示行中执行

makecert -sk myNewKey -r -n "CN=发证机关的名字,OU=Certification,O=公司名字,E=name@https://www.360docs.net/doc/bc17556203.html," -ss my myNew.cer cert2spc myNew.cer myNew.spc makecert -sk myNewKey -r -n "CN=发证机关的名字,OU=Certification,O=公司名字,E=name@https://www.360docs.net/doc/bc17556203.html," -ss my myNew.cer

cert2spc myNew.cer myNew.spc makecert具体使用帮助可参考创建证书的工具(makecert.exe)

签名

要使用到signtool工具,也可以在VS2005目录下找到。

signtool工具有多种使用模式,下面使用的是带UI的向导模式。

在命令提示行中执行

signtool signwizard signtool signwizard 之后进入signcodewizard:

step1.选择要签名的cab文件step2.自定义step3.从文件中选择myNew.spc step4.csp中的私钥/密钥容器:myNewKey step5.sha1 step6.next step7.描述:插件名称/web:https://www.360docs.net/doc/bc17556203.html, step8.https://www.360docs.net/doc/bc17556203.html,/scripts/timstamp.dll step1.选择要签名的cab文件

step2.自定义

step3.从文件中选择myNew.spc

step4.csp中的私钥/密钥容器:myNewKey

step5.sha1

step6.next

step7.描述:插件名称/web:https://www.360docs.net/doc/bc17556203.html,

step8.https://www.360docs.net/doc/bc17556203.html,/scripts/timstamp.dll signtool 的具体使用帮助可参考签名工具(SignTool.exe)

ocx控件制作步骤

制作activex控件(ocx)步骤1.安装IDE(.NET) 2.第一步 3.第二步

4.第三步 双击解决方案中的backup3Ctrl 5.第四步 制作按钮控件需要编辑的事件 属性中 得到按钮按下事件,编辑代码 void Cbackup3Ctrl::OnLButtonDown(UINT nFlags, CPoint point) { if( MessageBox("确定要开始帐前备份吗?", "确定 ",MB_YESNO|MB_DEFBUTTON2)==IDYES)

WinExec("c:\\中心日终\\backup_before.bat", SW_SHOW); else return; COleControl::OnLButtonDown(nFlags, point); } 6.第五步 在代码中找OnDraw方法:填写代码 // Cbackup3Ctrl::OnDraw - 绘图函数 void Cbackup3Ctrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { DoSuperclassPaint(pdc, rcBounds); CSize Extent = pdc->GetTextExtent("备份中"); CPoint pt( rcBounds.CenterPoint().x - Extent.cx/2, rcBounds.CenterPoint().y - Extent.cy/2 ); int nMode = pdc->SetBkMode(TRANSPARENT); pdc->TextOut(pt.x, pt.y, "备份中"); } 7.第六步 生成解决方案

IE浏览器的使用

IE浏览器的使用 1.实验目的与要求 (1)通过使用WWW服务,充分了解与WWW相关的概念和协议,如HTTP、URL等。 (2)熟练使用WWW浏览器,掌握WWW的浏览技巧。 (3)了解并熟悉使用一种浏览器(IE)。 (4)使用搜索引擎查找“迅雷”软件(Netants.exe)并将之下载到本地硬盘中。 2.实验内容与步骤 (1)实验环境 软件环境:Windows XP、Internet Explore 6.0。 硬件环境:计算机。 网络环境:要求本地网络连接到Internet上。 (2)启动浏览器 尝试使用至少3种方式启动网页浏览器。例如: 从操作系统桌面双击IE浏览器图标,启动IE浏览器。 从屏幕底部任务栏单击浏览器图标,启动IE浏览器。 从“开始”→“所有程序”中单击浏览器图标,启动IE浏览器。 从“开始”的快捷菜单单击浏览器图标,启动IE浏览器。 从资源管理器中选择IE浏览器双击运行。 从“开始”→“运行”中选择IE浏览器来运行。 (3)浏览 在学习如何浏览之前,先打开IE浏览器,了解一下浏览器的屏幕组成。IE 6.0浏览器界面主要包括标题栏、菜单栏、工具栏、主窗口和状态栏。 标题栏:屏幕的最上一行是标题栏,其上显示了当前浏览的网页的名称或者是IE 6.0所显示的超文本文件的名称。右上方是常用的“最小化”、“还原”和“关闭”按钮。 菜单栏:位于标题栏下方,其上有“文件”、“编辑”、“查看”等6项,它包括了IE 6.0的所有命令,以后将陆续介绍。 工具栏:即“查看”菜单中的“工具栏”命令中的3个选项:标准按钮、地址栏和链接。 从“查看”菜单中,选择“工具栏”中的“标准按钮”命令(在其前面有“√”),就出现了工具栏。标准按钮中包括了最常用的菜单项的快捷键。 从“查看”菜单中,选择“工具栏”中的“地址栏”和“链接”命令(在其前面有“√”),就出现了地址栏和链接。地址栏用于输入和显示当前浏览器正在浏览的网页地址。用户只要输入 要访问的网页的地址,就可以访问该网站了。单击“链接”右边的“>>”按钮,出现的链接栏中 包含了常用的几个站点,包括Hotmail站点和Microsoft的站点,直接单击这些按钮,就可以访问 这些网站。 主窗口:IE 6.0屏幕的主要部分用来显示网页信息,包括文本信息、图像、链接等。 状态栏:状态栏位于屏幕的最下方,自左向右,一般分为3个部分。最左边的方框用来显 示各种提示信息,如正在浏览的网页地址、IP地址、链接文件的名称以及已经连接或正在 连接等状态信息。左边第二个框用来显示工作的方式,也即当前浏览是脱机浏览还是上网 浏览。最右边的框用来显示当前主页所在的工作区域。 浏览的最简单也是最直接的方法就是直接在地址栏中输入要浏览的网页地址。如在地址栏中 输入“https://www.360docs.net/doc/bc17556203.html,”,然后按回车键,就可以浏览新浪网的主页了。 (4)访问历史记录 ①访问刚刚访问过的网页。

VB封装Excel_VBA成DLL技巧

VB封装Excel_VBA成DLL技巧 VB封装Excel_VBA成DLL技巧 使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。一、启动VB6.0:执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:二、引用:VB 中对Excel的引用执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2 Excel 2000中: Microsoft Excel 9.0 Object Library Microsoft Office 9.0 Object LibraryExcel 2003中:Microsoft Excel 11.0 Object Library Microsoft Office 11.0 Object Library三、编写代码: 1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”, 改为“zyg365”, 2、在类模块的代码编辑区写入代码:如下图3 模块名称为“hongtong”,代码如下在VB中编写代码时:要注意以下声名 Dim XLAPP As Object Set XLAPP = GetObject(, "Excel.Application") 代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.”

(或按照Sub hongtong() 中的格式编写。)Sub hongtong() Dim excelApp As New Excel.Application Dim excelWorkBook As Excel.Workbook Dim excelWorksheet As Excel.Worksheet Set excelWorkBook = excelApp.Workbooks.Add '创建新工作簿 Set excelWorksheet = excelWorkBook.Sheets(1) excelWorksheet.Cells(2, 3) = "宏通" '写入数据excelWorksheet.Cells(3, 4) = "zyg365" '写入数据excelApp.Visible = True '显示excel界面,用于调试excelWorkBook.PrintPreview '打印预览 excelWorkBook.PrintOut '打印输出 excelWorkBook.Saved = True 'excelWorkBook.Close '关闭工作薄 'excelApp.Quit '退出excel End Sub四、工程属性设置:(可以不设置,本步骤可以省略) 为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4 执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)五、保存工程、测试、打包生成Dll文件:

ActiveX控件的开发及其工控界面设计

文章编号:1006-1576(2005)03-0105-02 ActiveX控件的开发及其工控界面设计 范艳军,孙力 (华南理工大学自动化科学与工程学院,广东广州 510640) 摘要:ActiveX控件的开发及其工控界面设计,采用VC框架和类向导开发,以MFC ActiveX ControlWizardk自动生成空OCX文件,并将设备作成OCX文件。设备控件外观可通过PHOTOSHOP画出或将设备照片作为资源文件载入控件得到。通过控件的事件,方法和属性以实现控件与工控软件内核的沟通。 关键词:ActiveX控件;工控界面;VC;OCX文件 中图分类号:TP391.9 文献标识码:A Development of ActiveX Control and Design of Industrial Control Interface FAN Yan-jun, SUN Li (College of Automation Science & Engineering, South China University of Technology, Guangzhou 510640, china) Abstract: The ActiveX control is developed and interface of industrial control is designed with the VC frame and guide of class. An empty OCX file was created automatically with MFC ActiveX Controlwizard, and the control of equipment was made into the field OCX. The facade of equipment control was drawn with PHOTOSHOP or the photo of equipment used as VC resource file was loaded control. The communication between control and the kernel of industrial control software is realized through control event, method and attribute. Keywords: ActiveX; Industrial control interface; VC; OCX file 1 引言 为形象的表现控制现场,最好的办法就是让用户界面上的设备具有和真实仪器相似的外观。VC 以其强大、灵活的特点成为主流开发平台。利用其图形图像处理功能可方便开发出与真实设备外观相似的控件,添加必要的事件、方法和属性之后即可通过该控件与控制现场进行交流,以表现控制现场和进行有效控制。作好与现场设备有相似外观的单个控件后,通过基于对象的编程开发工具调用控件,将所作单个设备控件连接,调整各自工作状态,就能反映整个控制现场。 2 ActiveX控件的开发 ActiveX技术是基于COM(组件对象模型)建立起来的编码和API协议,是与平台无关的技术。即在一种编程语言下开发的控件无需修改,就可在另一种编程语言中使用。这与使用Windows通用控件类似。利用VISUAL C++提供的框架向导和类向导可开发OCX文件。使用MFC ActiveX ControlWizardk可自动生成空的OCX文件,每个OCX文件可以含有多个控件。但OCX文件过大不利于容器程序的调用,所以将一类设备制作成一个OCX文件。利用PHOTOSHOP画出工控设备外观,或将实际的工控设备拍照作为资源文件载入控件,作为设备控件外观。然后在OCX文件的ONDRAW 函数里填写代码,其编程方法如下: int w_CBitmap,h_Cbitmap; //定义两个整型变量存储位图的宽和高 Cbitmap Bitmap; //定义位图类 BITMAP BM; //定义BITMAP结构,以获取位图的参数CDC Pdcl; // 定义一个CDC类 Bitmap.Loadmap(IDC_BITMAP); //将位图装载,该位图即是设备外观 Bitmap.GetObject(sizeof(BM)); //得到位图结构 w_CBitmap=BM.bmWidth; w_Cbitmap=BM.bmHeight; Pdcl.CreateCompatibleDC(Pdc); //创建于显示设备场景兼容的CDC对象 Pdcl.SelectObject(&Bitmap); //将位图送入场景 Pdc?StretchBlt (rcBounds.left,rcBounds.top,rcBounds.Width(), rcBounds.Height(), &Pdcl , 0 , 0 ,w_Cbitmap, h_Cbitmap, SRCCOPY); //将位图显示在(0,0)为上端点,宽为rcBounds.Width() //高为rcBounds.Height()的区域内, //其中Pdc,rcBounds为ONDRAW函数的参数Bitmap.DelectObject( ); 其中rcBounds.left为控件左顶点的横坐标,rcBounds.top为控件左顶点的纵坐标,rcBounds.Width(),rcBounds.Height() 为控件的宽与高。通过这段代码将资源号为IDB_BITMAP1位图作为设备外观来显示,工控界面上的设备与现场设备就具有近似的外观,可模拟工作现场。 制作了具有设备外观的静态控件后,还须在工控软件中表现设备的动态工作状态。为此通过MFC ClassWizard添加一个WM_TIMER消息的处理函数 收稿日期:2004-11-08;修回日期:2005-02-24 作者简介:范艳军(1978-),男,山西人,2001年毕业于中北大学,现华南理工大学在读硕士,从事智能控制理论与应用研究。 ·105·

java调用C#封装的dll方法

Java调用C# DLL的方法简介 By 潘伟2012-8-7 关于java调用C# 封装的DLL文件的方法 第一种:java利用JNA进行调用 思路:C#源码生成COM组件(dll和tlb文件),再利用C++进行封装,java通过JNA调用C++封装的DLL。 第二种:java利用jacob进行调用 第一种java利用JNA调用C# DLL 需安装Visual Studio 2010 ,下载jna.jar(解压放置于jdk_home/jre/lib/ext目录下)。 第一步:利用C#写COM组件 1、新建一个类库项目(文件—新建—项目—类库;命名:COMTest);//根据实际需要取文件名 2、生成.cs主文件; COMTestClass.cs

3、右键点击工程->应用程序->程序集信息->使程序集com可见,打上勾

4、右键点击工程->生成->为com Interop注册打上勾 5、设置强签名 (由于.Net下编译的COM组件并等同于C编译的COM组件,所以存在必须在运行目标机器注册的情况,对此.Net下编译的COM组件必须为程序进行签名,即强命名密钥;) 打开Visual Studio Command Prompt 输入:sn -k MyKeyFire.snk 生成MyKeyFire.snk 文件,注意路径。(.snk文件可以随意取,但.snk后缀名别忘记了) 在签名标签中选中为程序集签名,选择刚刚生成的强名称文件MyKeyFire.snk 。

6、在“解决方案资源管理器”中找到节点“Properties”打开AssemblyInfo.cs文件 如下图 7、将[assem bly: Com Visible(false)]属性改成[assem bly: Com Visible(true)] 如下图 8、编译程序,\bin\Debug目录中会生成COMTest.dll 和COMTest.tlb文件。 第二步:利用C++进行再封装 1、创建C++ DLL项目,新建项目->VC++->Win32 项目(名称:COMTest_Bridge)->下一步->应用程 序类型:DLL 2、添加类,类名:COMTest_Bridge,.h名:COMTest_Bridge.h,.cpp名:COMTest_Bridge.cpp, 然后生成项目; 3、把第一步生成的COMTest.dll 和COMTest.tlb文件放入C++项目下的Debug文件夹下。 4、注册COM组件: 4.1打开Visual Studio Command Prompt进入Debug目录,运行命令注册:

使用NetBox简单实现ASP封装为EXE带图的详细教程

使用NetBox简单实现ASP封装为EXE带图的详细教程 NetBox是一个使用脚本语言进行应用软件开发与发布的开发环境和运行平台,使用 NetBox,可以完全使用脚本语言(比如 VBScript,Javascript) 创建出稳定高效的应用软件,并且可以平滑移植到从 Windows 98 到 Windows .NET Server 的全部操作系统上。适用范围对于 WEB 应用,可以迅速将已有的iis+asp 的应用平滑移植到NetBox应用中,除极少数高级编程外,代码不需要任何修改,同时NetBox还提供大量扩展部件,使得 WEB 应用更加方便。由于NetBox可以将全部代码最终发布成为应用程序,保护了开发人员的利益和代码的完整性。同时,NetBox还可以方便地编写更多的桌面应用、系统服务器应用、定制网络应用等等。 运行环境要求NetBox的基本运行环境要求很低,最低要求只需要 Windows 98 或者 Windows NT + IE4 即可运行。而如果需要使用系统其他部件(比如ado),则需要根据系统情况,如果系统本身未缺省安装,需要自行安装。下面列出的是经过测试的所有系统平台: Windows 98 Windows 98 SE Windows ME Windows NT+IE4 Windows 2000 Windows XP Windows .NET Server 以上为该软件的说明文件内的内容。 简单的形容就是把ASP文件打包成一个EXE文件,并且不需要在调试的机器上安装IIS即可正常调试。如果按照说明书来操作的话,观看比较繁琐,本人为方便大家使用,现制作一个简单的使用教程。 封装过程 1、首先安装NetBox,安装时全部是英文界面,默认安装。 2、准备步骤: 2.1、在任意(如D)盘根目录下建立web文件夹(在哪个盘符下建立都可以,根据自己的喜好变换位置。); 2.2、把需要封装的ASP文件拷贝至D盘web文件夹下的wwwroot文件夹内(是

ACTIVEX网页控件开发(详细)

步步学ACTIVEX网页控件开发 转载自IT168 [ https://www.360docs.net/doc/bc17556203.html,/ ] 第1页:创建ActiveX控件 本文将首先介绍如何使用Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX控件和网页页面之间的通信。 MyActiveX控件的效果图 简介 ActiveX是由Microsoft在90年代中期提出的一项技术。利用ActiveX技术,开发者可以创建像Java小程序applet一样的小型应用程序。这些应用程序可以被下载然后在Microsoft的浏览器中运行。这篇文章是为那些想学习如何开发他们的第一个ActiveX控件的Visual C++开发者准备的。

当我自己尝试学习这些技术的时候,我发现很多针对ActiveX技术的资料都已经不再适用了,都已经过时了,或者丢失了很多关键性的信息,这些都使得我 在为我的项目创建一个ActiveX控件的时候,变得困难重重。这篇文章将帮助你实现ActiveX网页控件开发的快速入门。本文将首先介绍如何使用 Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX 控件和网页页面之间的通信。 另外,你也将学习到如何在默认的Internet Explorer安全设置下取消掉控件加载过程中的警告或者错误提示,使你的控件成为一个“安全”的ActiveX控件。在本文中,我们将创建一个实际的ActiveX控件。在控件加载的过程中,它将显示一个动态的进度条,告诉用户控件正在加载并处理信息。同时,这个控件 也将展示如何在ActiveX控件和Web页面之间传递信息。本文将引导你一步 步地利用Microsoft Visual Studio 2005完成ActiveX控件的开发工作。 创建ActiveX控件 要创建一个ActiveX控件,首先启动Visual Studio 2005,执行下面这些步骤: 1.选择“文件”菜单,然后选择“新建”->“项目”。 2.在“新建项目”对话框中,如下图1所示,选择“Visual C++”分类下的“MFC”。然后选择“MFC ActiveX控件”作为项目模板。 第2页:添加对动态GIF动画的支持 3.将新项目命名为“MyActiveX”,然后选择项目的保存目录,最后点击“确定” 按钮,关闭“新项目”对话框,进入“MFC ActiveX控件”向导。

c#数据库连接、操作、封装dll

c#数据库连接去sql server 为了简化数据库连接和操作,编写一个数据库dll文件也是比较有用的。只需要设置参数就可以完成数据库操作 属性 OUTPUTSTR 存储过程输出 CONSTR 数据库连接字符串 SQL_SLT 存储过程名或sql语句列表名 代码错误信息返回或连接关闭状态 public int sql_select(int cmdtype, int sqlst,int n) 数据库语句执行方法, cmdtype设置数据源执行的SQL语句或存储过程,即commandtype属性(0为text枚举,1为storedprocedure枚举,其他值为tabledirect枚举); sqlst设置执行SQL语句的方式,0为executenonquery方法执行,1为executereader 方法执行,其他为executescalar方法执行。设置存储过程参数个数。方法返回受 影响的行数 public Boolean Connopen() 打开数据库连接方法,返回bool值,true为打开,false 为未打开,并将未打开错误返回到EXSTR属性里 public void conn_close() 连接关闭方法,将关闭状态返回到EXSTR属性 public void sqlsp(string p1,string p2,string p3,int p4,int p5) 获取SqlParameter 对象参数,p1获取SqlParameter.ParameterName属性值,p2获取SqlParameter.sqldbtype属性值, p3获取SqlParameter.value属性值,p4获取SqlParameter.size属性值, p5设置SqlParameter.Directions属性值,0为ParameterDirection.Input、 1为ParameterDirection.InputOutput、2为ParameterDirection.Output、 大于3为ParameterDirection.ReturnValue public DataSet ds 返回查询结果集 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data; using System.Collections; namespace connet { public class jdbccoonn { private string constr, exstr, sql_slt,outputstr; private static int q; public static int Q { get {

使用MFC开发ActiveX(ocx)控件

作者: 中国电波传播研究所青岛分所郎锐 时间: 2004-03-09 出处: yesky 一、前言 二、建立工程框架 三、属性、方法以及事件的添加 四、实现属性表 五、在包容程序中使用ActiveX控件 六、小结 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一 个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE 自动化等。 ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不 同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的IDispatch接口来支持。除了属性和方法外,ActiveX控件还具有区别于自动化服务的一种特性--事件。事件指的是从控件发送给其包容程序的一种通知。与窗口控件通过发送消息通知其拥有者类似,ActiveX控件是通过触发事件来通知其包容器的。事件的触发通常是通过控件包容器提供的 IDispatch接口来调用 自动化对象的方法来实现的。在设计ActiveX控件时就应当考虑控件可能会发生哪些事件以及包容器程序将会对其中的哪些事件感兴趣并将这些事件包含进来。与自动化服务不同,ActiveX控件的方法、属性和事件均有自定义(custom)和库存(stock)两种不同的类型。自定义的方法和属性也就是是普通的自动化方法和属性,自定义事件则是自己选取名字和Dispatch ID的事件。而所谓的库存方法、属性和事件则是使用了ActiveX控件规定了名字和Dispatch ID的"标准"方法、属性和事件。 ActiveX控件可以使COM组件从外观和使用上能与普通的窗口控件一样, 而且还提供了类似于设置Windows标准控件属性的属性页,使其能够在包容器程序的设计阶段对ActiveX控件的属性进行可视化设置。ActiveX控件提供的这些功能使得对其的使用将是非常方便的。本文下面即以MFC为工具对ActiveX 控件的开发进行介绍。 建立工程框架 通过"MFC ActiveX ControlWizard"向导可以非常容易的建立一个MFC ActiveX控件工程框架。按照默认的选项将建立如图1所示的工程结构:

类封装成dll

如果你的工作长期与某个领域相关,比如说长期做直接体绘制 (DVR)方面的开发,那么你可能经常使用自己的传递函数类,如果每一个工程你都把传递函数类的.h和.cpp文件添加进去会比较麻烦,其实,我们可以像 使用opengl的库那样来用你自己的类,做法就是把你写好的类封装成dll,具体做法如下: 第一步:制作dll 利用VC6新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cpp文件。假设你要封装的类的名成是TransferFunction,添加头文件 TransferFunction.h和TransferFunction.cpp到工程中。并将TransferFunction.h修改成: class __declspec(dllexport) TransferFunction { ... } 从而说明以后从dll要被导出的类是哪一个。这样编译完就会产生TransferFunction.dll和TransferFunction.lib两个文件。 第二步:如何使用这个dll 当已经生成dll后,有两种方法可以在其它程序中调用dll中的类和成员函数: 方法一: 1)把TransferFunction.dll和TransferFunction.lib复制到调用程序的执行路径下,注意不是debug路径下。 2)在project->setting->link里添加TransferFunction.lib(或者用 #pragma comment(lib, "TransferFunction.lib") ) 3)把TransferFunction.h中的__declspec(dllexport)改成 __declspec(dllimport) 然后复制到调用程序的执行路径下。 4)最后在主程序中就可以通过包含TransferFunction.h来使用TransferFunction类和它的成员函数。 方法二(推荐): 在方法一中,你每次建立一个工程都需要把 TransferFunction.dll,TransferFunction.lib,TransferFunction.h三个文件拷贝到工程里面 去,事实上这只发挥了dll对类的代码保护的功能,并没有多大的减轻编程人员的工作量,下面的方法可以减少编程人员的工作量,具体步骤:

怎样使用IE浏览器浏览网页

怎样使用IE浏览器浏览网页 1.电脑成功连接上网后,可以运用浏览器浏览网页. 2.浏览器用许多种,常用的是WINDOWS系统自带的”IE”浏览器(internetexplorer的简称,即互联网浏览器)。 3.用鼠标右键点击桌面上IE浏览器图标,选择打开(或用鼠标左键快速双击IE浏览器图标) 也可依次点击“开始”-“程序”-“Internet Explorer”

4.弹出浏览器窗口(下图是访问精度网https://www.360docs.net/doc/bc17556203.html,时的页面情况) IE浏览器的界面: 第一行为标题栏,显示当前正在浏览的网页名称或当前浏览网页的地址。标题栏的最右端是这个窗口的最小化、最大化(还原)和关闭按钮。

第二行为地址栏:输入网址的地方。可以在地址栏中输入网址,然后点右边的“刷新/转到”按钮(也可以敲回车键)直接到达需要进入的网站。 第三行为菜单栏:点击它们,可以出现下拉菜单,显示可以使用的菜单命令。 第四行为标准工具栏:列出了常用命令的工具按钮,使用户可以不用打开菜单,而是单击相应的按钮来快捷地执行命令。平时常用的按扭为:刷新按钮、主页按钮和收藏夹按钮。 中间的窗口区域就是浏览区:用户查看网页的地方,也是对用户来说最感兴趣的地方。

最下面一行为状态栏:显示当前用户正在浏览的网页下载状态、下载进度和区域属性。 如果状态栏没有显示,可以单击菜单栏中的“查看”,在下拉菜单中,在“工具栏”的下一级菜单中,找到“状态栏”项,在它上面单击“勾选”起来就可以了。若标准工具栏也没有,操作方法同地址栏的操作一样。 5.使用IE浏览器 打开浏览器,在地址栏中输入想要访问网站的地址,比如现在想访问精度网站。那么就在地址栏中输入:https://www.360docs.net/doc/bc17556203.html,,然后按键盘上的“回车”键或者用鼠标单击地址栏后面的“转到”就可以进入精度网站的页面。 5.1前进后退按钮的使用 在页面上,若把鼠标指针指向某一文字(通常都带有下划线)或者某一图片,鼠标指针变成手形,表明此处是一个超级链接。在上面单击鼠标,浏览器将显示出该超级链接指向的网页。例如:单击精度网站(https://www.360docs.net/doc/bc17556203.html,)“产品”就跳转到精度网的“产品栏目页面”,就可以浏览相应的内容。如果想回到上一页面,怎么办呢?可以点击屏幕上方“后退”按钮,就可回到上一页面。回到搜精度主页面后,会发现屏幕上方的“前进”按钮也会亮色显示了。单击“前进”就又来到刚才打开的“产品”页面。在这注意:屏幕上方中的按钮若是“灰色”显示,表明是不可执行的。如果不想浏览该内容,那么就只有直接点击窗口右上方的关闭按钮把该窗口关闭了。

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程 开篇语:最近在弄ocx控件发布到https://www.360docs.net/doc/bc17556203.html,网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。) ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调用控件的属性或方法。因此,开发面向Web 的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。下面介绍这个问题。 一.创建MFC ActiveX项目 1.打开VS2005新建MFC项目。这里我们取名为“ActiveXDemo”。 2.输入项目名称为“ActiveXDemo”和项目位置。点击“确定”按钮,打开向导对话框。

WoSign 免费提供的时间戳服务URL:https://www.360docs.net/doc/bc17556203.html,/timestamp 时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。 3.选择“控件设置”选项卡,具体设置可参考上图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。 二.添加控件方法 VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。 1.点击“视图”,打开“类视图”窗口。

VB封装DLL实例讲解(三)

4 1 2点选DLL 3点打开按钮

5 2 3点选DLL 4点打开按钮

我们可以将注册语句放在窗体的加载事件,自动完成DLL的注册,具体可以参看实例。但如果我们有多个DLL需要批量注册时,可以考虑通过软件打包发布工具来完成DLL的注册工作;也可以事先编写BA T文件,让打包发布时将该BA T文件一并打包发布,安装时运行该BA T文件,来完成N个DLL的批量注册,在些就不多着笔墨,大家可以参看实例包中的BA T文件实例。 (二)DLL自动引用方法 2.1 通过References对象的AddFromFile方法实现自动引用 Dim ref As Reference '申明引用类对象 On Error Resume Next '避免因重复引用造成的错误提示 '实例化引用对象,完成DLL的引用 Set ref = References.AddFromFile(CurrentProject.Path & "\ClsFindString.dll") 为了避免因重复引用出现的错误,我们可以如上代码中加入Error语句,我们还可以在应用程序退出时,通过对References对象的Remove方法释放DLL或反引用。 Dim ref As Reference '申明引用类对象 '实例化反引用对象 Set ref = References("ClsFindString") '移除引用指定类库 References.Remove ref 说明:根据本人实践,我个人倾向于使用Error语句,因为如果应用程序非正常退出,引用对象没有反引用成功,启动时就难免出现重复引用的错误问题。 2.2 通过DLL唯一标识号实现自动引用 Dim ref As Reference'申明引用类对象 On Error Resume Next '避免因重复引用造成的错误提示 '唯一标识号完成注册,需要DLL标识号,主版本号,次版本 Set ref = References.AddFromGuid("{C5E340E2-C557-4852-AE83-5A0578B6863B}", 1, 0) DLL的标识号是编译生成时就确定了的,这个标识号就是DLL的终生制身份证号,我们可以通过这个唯一标识号来完成DLL自动引用。但此种方法必须具备两个条件,一是DLL已经成功注册,二是我们知道了该DLL的标识号、主版本号、次版本号。 2.2.1获取DLL标识号、主版本号、次版本号方法 Dim ref As Reference '申明引用类对象 '实例化引用类库对象 Set ref = References.AddFromFile(CurrentProject.Path & "\ClsFindString.dll") Debug.Print ref.GUID '获得DLL唯一标识号 Debug.Print ref.Major '获得主版本号 Debug.Print ref.Minor '获得次版本号

IE浏览器使用高级技巧.

IE浏览器使用高级技巧 1.添加新菜单项 如何添加一个菜单项到微软Internet Explorer浏览器的“工具”(Tools)下拉菜单中?这个新添加的菜单项表示运行一个Microsoft Win32应用程序,或者表示运行一个脚本程序。 注意:下面描述的添加菜单项的步骤都是针对访问机器的全部用户而言的,如果想为每一个不同用户添加菜单,可以在下面的步骤中用HKEY_CURRENT_USER替换HKEY_LOCAL_MACHINE。 建立一个正确的全局唯一表示符,即GUID。它可以使用诸如GUIDGEN (Visual Studio光盘中有)等工具生成,它是一组128位的二进制数字,这些数字可以保证在“任何空间和时间”里独一无二,没有重复。在空间,是由于数字生成器会读取网卡的ID号码;在时间,是由于同时会用到系统的日期和时间。可用GUID标识COM类(此时叫作CLSID)或者COM接口(IID)。尽管名字不同,但基本概念与二进制结构都是相同的。GUID亦可在其他环境中使用,这里不再赘述。 现在我运行GUIDGEN.EXE获得一个GUID{93D80854-9DCB-426d-947D-F20CCC2F451B},如图13: 图13 760) this.width=760;'/>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" border=0 orig_onmouseout="null"> 在下面的注册表项目下建立一个新项: HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions 建立正确后,就象下面一样: HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\{93D80854-9DCB-426d-947D-F20CCC2F451B} (可选步骤)在下面的注册表项目下,建立一个新的字符串数值MenuCustomize: HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions 建立正确后,就象下面一样:

C#生成ocx控件

用C#编写ActiveX控件(一) 前些日子做一个Web项目,必须自己编写一个ActiveX控件。如今的ActiveX控件大多是使用VB/C++来开发的,而我对他们并不熟悉,因此考虑使用熟悉的C#编写ActiveX 控件。 首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图: UserControl1.cs内容如下: using System; using System.Collections; using https://www.360docs.net/doc/bc17556203.html,ponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace HelloWorld { ///

/// UserControl1 的摘要说明。 /// public class Demo : https://www.360docs.net/doc/bc17556203.html,erControl {

private https://www.360docs.net/doc/bc17556203.html,bel label1; ///

///必需的设计器变量。 /// private https://www.360docs.net/doc/bc17556203.html,ponentModel.Container components = null; public Demo() { // 该调用是 Windows.Forms 窗体设计器所必需的。 InitializeComponent(); // TODO: 在 InitComponent 调用后添加任何初始化 } /// ///清理所有正在使用的资源。 /// protected override void Dispose( bool disposing ) { if( disposing ) { if( components != null ) components.Dispose(); } base.Dispose( disposing ); } 组件设计器生成的代码

c,,中的模板及函数怎么封装为dll

竭诚为您提供优质文档/双击可除c,,中的模板及函数怎么封装为dll 篇一:封装dll 基于Visualc++6.0的dll编程实现 一、前言 自从微软推出16位的windows操作系统起,此后每种版本的windows操作系统都非常依赖于动态链接库(dll)中的函数和数据,实际上windows操作系统中几乎所有的内容都由dll以一种或另外一种形式代表着,例如显示的字体和图标存储在gdidll中、显示windows桌面和处理用户的输入所需要的代码被存储在一个userdll中、windows编程所需要的大量的api函数也被包含在kerneldll中。 在windows操作系统中使用dll有很多优点,最主要的一点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个dll文件,真正实现了资源"共享",大大缩小了应用程序的执行代码,更加有效的利用了内存;使用dll的另一个优点是dll文件作为一个单独的程序模块,封装性、独立性好,在软件需要升级的时候,开发人员只需要修改相应的dll文件就可以了,而且,当dll中的函数改变后,只要

不是参数的改变,程序代码并不需要重新编译。这在编程时 十分有用,大大提高了软件开发和维护的效率。 既然dll那么重要,所以搞清楚什么是dll、如何在windows操作系统中开发使用dll是程序开发人员不得不解 决的一个问题。本文针对这些问题,通过一个简单的例子,即在一个dll中实现比较最大、最小整数这两个简单函数,全面地解析了在Visualc++编译环境下编程实现dll的过程,文章中所用到的程序代码在windows98系统、Visualc++6.0编译环境下通过。 二、dll的概念 dll是建立在客户/服务器通信的概念上,包含若干函数、类或资源的库文件,函数和数据被存储在一个dll(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的dll。dll库不同于静态库,在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为*.lib),Visualc++的编译器在处理程序代码时将从静态库 中恢复这些函数和数据并把他们和应用程序中的其他模块 组合在一起生成可执行文件。这个过程称为"静态链接",此时因为应用程序所需的全部内容都是从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行。 在动态库的情况下,有两个文件,一个是引入库(.lib)文件,一个是dll文件,引入库文件包含被dll导出的函数

相关文档
最新文档