VB.NET 开发的WINDOWS 界面控件如何应用在网页中
来源:互联网 发布:java集合框架试题改错 编辑:程序博客网 时间:2024/05/22 15:25
最近项目中遇到一个需求,需要把之前采用VB.NET开发的WINDOWS EXE程序转化成采用WEB方式调用运行,之前一下就想到了VB6中开发ocx控件的方式实现,但由于把现有.net应用转变为vb6应用需要的工作量比较大,考虑是否可以直接用.net平台转换,从而采用了把现有工程转变为.net的windows控件工程然后在转变成COM控件的形式。由.net的exe转变为.net的windows控件比较容易,代码变动不大,在转变为COM时采用了microsoft提供的以下方式:
更新: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下载调用机制还在研究中。
- VB.NET 开发的WINDOWS 界面控件如何应用在网页中
- [VB.NET]在VB.NET开发程序时,如何制做一个欢迎界面?
- 如何正确的在VBA/VB中引用C#/VB.NET开发的DLL
- 教你如何在VB.NET中应用SQLDMO对象
- 如何应用VB.NET MonthCalendar控件(图)
- DataGridView控件在vb.net中的应用
- [VB.NET]如何遍历web窗体中所有的控件
- 如何在aspx网页中使用.net编译后的自定义用户控件
- 如何:在 ASP.NET 网页中设置控件的 HTML 属性
- 走近VB.NET十五 在VB.NET中使用新的控件labellink访问
- 在VB.NET中使用控件数组
- 在vb.net 中使用mediaPlayer控件
- 一个关于在VB.NET中应用超级解霸的问题
- .NET : 如何在Windows Forms中使用DataRepeater控件
- [VB.NET]如何在DataGridView控件中增加、删除和修改记录(用程序代码的方法)
- 在VB.NET中如何获得桌面的路径
- VB.net 如何在WebBrowser中插入新的内容
- 在VB.NET中应用SQLDMO
- 【asp.net】VS 2008中文版下载
- C/S 与 B/S
- 想成为嵌入式程序员应知道的0x10个基本问题
- 做个ITGirl?
- 超强的指针学习笔记
- VB.NET 开发的WINDOWS 界面控件如何应用在网页中
- C缺陷与陷阱学习笔记
- GML、SVG、VML的比较
- 理解编译预处理
- 正确使用内存
- COM 组件设计与应用(五)---用 ATL 写第一个组件
- 关于指针与函数的几点小结
- Unexpected row count: 0 expected: 1
- C语言文件操作