VB.NET 开发的WINDOWS 界面控件如何应用在网页中
2008-11-19 12:51
597 查看
最近项目中遇到一个需求,需要把之前采用VB.NET开发的WINDOWS EXE程序转化成采用WEB方式调用运行,之前一下就想到了VB6中开发ocx控件的方式实现,但由于把现有.net应用转变为vb6应用需要的工作量比较大,考虑是否可以直接用.net平台转换,从而采用了把现有工程转变为.net的windows控件工程然后在转变成COM控件的形式。由.net的exe转变为.net的windows控件比较容易,代码变动不大,在转变为COM时采用了microsoft提供的以下方式:
Visual Basic 语言参考
ComClassAttribute 类
更新:2007 年 11 月
ComClassAttribute 属性指示编译器添加允许类作为 COM 对象公开的元数据。
备注
使用 ComClassAttribute 来简化从 Visual Basic 公开 COM 组件的过程。COM 对象与 .NET Framework 程序集差别很大,如果没有 ComClassAttribute,则从 Visual Basic 生成 COM 对象需要经过很多步骤。对于标记为 ComClassAttribute 的类,编译器会自动执行这些步骤中的许多步骤。
示例
若要运行本示例,请创建一个新的 Class Library 应用程序,然后将下面的代码添加到类模块中。
2、修改AssemblyInfo.vb文件
3、修改ComClass1控件类文件
引用:http://msdn.microsoft.com/zh-cn/vbasic/57kx88c8.aspx
4、编译工程
5、测试成果
采用这种方式即可把现有的vb.net写的windows控件工程封装为COM组件
然后编写一个测试html进行调用
即可实现调用,对于目前如何打包封装现有COM dll,实现类似于OCX下载调用机制还在研究中。
Visual Basic 语言参考
ComClassAttribute 类
更新:2007 年 11 月
ComClassAttribute 属性指示编译器添加允许类作为 COM 对象公开的元数据。
<System.AttributeUsage(System.AttributeTargets.Class, _ Inherited := False, AllowMultiple := False)> _ Public NotInheritable Class ComClassAttribute Inherits System.Attribute
备注
使用 ComClassAttribute 来简化从 Visual Basic 公开 COM 组件的过程。COM 对象与 .NET Framework 程序集差别很大,如果没有 ComClassAttribute,则从 Visual Basic 生成 COM 对象需要经过很多步骤。对于标记为 ComClassAttribute 的类,编译器会自动执行这些步骤中的许多步骤。
说明: |
---|
1、此属性简化 COM 对象的创建过程。若要将类作为 COM 对象进行公开,必须使用在“配置属性”对话框的“生成”区域中选择的“注册 COM Interop”选项来编译项目。 |
说明: |
---|
虽然还可以将用 Visual Basic 创建的类作为 COM 对象进行公开以供非托管代码使用,但它并不是真正的 COM 对象。有关详细信息,请参见 .NET Framework 应用程序中的 COM 互操作性。 |
示例
若要运行本示例,请创建一个新的 Class Library 应用程序,然后将下面的代码添加到类模块中。
2、修改AssemblyInfo.vb文件
'The following GUID is for the ID of the typelib if this project is exposed to COM '<Assembly: Guid("665cfdb4-39ce-42a1-afb1-13383922f6d5")> 在AssemblyInfo.vb文件中注释掉上面一行 |
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _ Public Class ComClass1 ' Use the Region directive to define a section named COM Guids. #Region "COM GUIDs" ' These GUIDs provide the COM identity for this class ' and its COM interfaces. You can generate ' these guids using guidgen.exe Public Const ClassId As String = "7666AC25-855F-4534-BC55-27BF09D49D46" Public Const InterfaceId As String = "54388137-8A76-491e-AA3A-853E23AC1217" Public Const EventsId As String = "EA329A13-16A0-478d-B41F-47583A761FF2" #End Region Public Sub New() MyBase.New() End Sub Function AddNumbers(ByVal X As Integer, ByVal Y As Integer) AddNumbers = X + Y End Function End Class |
4、编译工程
5、测试成果
采用这种方式即可把现有的vb.net写的windows控件工程封装为COM组件
然后编写一个测试html进行调用
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>TEST COM</title> </head> <body> <form id="form1" runat="server"> <div> <object classid="clsid:7666AC25-855F-4534-BC55-27BF09D49D46" ></object> </div> </form> </body> </html> |
相关文章推荐
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- VB.NET怎样开发自定义Windows控件
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- 如何使用 Visual VB .NET 对 DataGrid Windows 控件执行分页
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
- [VB.NET]在VB.NET开发程序时,如何制做一个欢迎界面?
- 如何应用VB.NET MonthCalendar控件(图)
- 如何使用 Visual C# .NET 对 DataGrid Windows 控件执行分页
- [VB.NET]如何取得动态控件中的值?
- [VB.NET]如何在第二个窗体里使用第一个窗体的控件方法
- N-Tiers开发方式(如何使用VB.NET撰写COM+组件)