您的位置:首页 > 编程语言 > VB

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 对象公开的元数据。

<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文件中注释掉上面一行

3、修改ComClass1控件类文件

<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

引用:http://msdn.microsoft.com/zh-cn/vbasic/57kx88c8.aspx

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>
即可实现调用,对于目前如何打包封装现有COM dll,实现类似于OCX下载调用机制还在研究中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: