VB.NET 開發的WINDOWS 界面控件如何應用在網頁中

 

        最近項目中遇到一個需求,需要把之前採用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下載調用機制還在研究中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章