VB6 では ActiveX DLL がプロジェクト テンプレートとしてリストされますが、VS 2005+ ではそのようなものはありません。古き良き ActiveX DLL テンプレートはどこにありますか? よろしくお願いします。
4 に答える
いくつかの概念; .NET アセンブリは、.NET 言語の ActiveX DLL と機能的に同等です。.NET クラスとメソッドは、さまざまなコンテキストでさまざまな意味を持つ属性で装飾できます。.NET アセンブリは、さまざまな属性を使用して正しい GUID を割り当てることにより、ActiveX/COM DLL (または OCX) に変換できます。
COM を使用する .NET アセンブリの設定の基本的な概要については、こちらを参照してください。
VB6 .NET と COM (ActiveX ではない) を含める必要がある Google 検索を行うことに注意してください。COM は、ActiveX 用語の背後にある基盤となるテクノロジであるため、より多くのヒットを生成します。
リンクした MSDN の記事には、.NET クラスの基本的な COM セットアップが示されています。ここでの属性は ComClass 属性です。
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1
#Region "COM GUIDs"
' These GUIDs provide the COM identity for this class
' and its COM interfaces. If you change them, existing
' clients will no longer be able to access the class.
Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
#End Region
' A creatable COM class must have a Public Sub New()
' without parameters. Otherwise, the class will not be
' registered in the COM registry and cannot be created
' through CreateObject.
Public Sub New()
MyBase.New()
End Sub
End Class
既存の COM DLL または OCX を .NET アセンブリに置き換えようとする場合に特に役立つ属性が他にもあります。最後に、.NET には、面倒な詳細を支援するさまざまなウィザードが多数用意されています。
これを試してください:http://msmvps.com/blogs/pauldomag/archive/2006/08/16/107758.aspx
ActiveX コントロールを作成し、それを Web ページで使用する方法を概説します。私の知る限り、「ActiveX」プロジェクト テンプレートは実際にはありません。これは、.NET が別の方法で行うためです。ただし、.Net コントロールを COM の世界から見えるようにすることはできます。これについては、上記の記事で説明しています。
あなたの質問からは明確ではありませんが、VS2005 で作成されたものを VB6 (または他の com 環境) で使用できるようにしたい場合は、Interop Forms Toolkitを参照してください。これにより、VB6 と VS2005 間の相互運用が大幅に簡素化されます。これらのアプリケーションを実際に配布したい場合は、作成したものをインストールするのがより楽しくなります (ヒント: GAC を使用しないでください。アプリケーションの実行可能ファイルと同じディレクトリに .Net dll をインストールし、RegAsm の使用方法を学習してください)。
ActiveX.dll を使用する目的 (プロジェクト ライブラリまたはユーザー コントロール) と、使用する環境について簡単に説明すると、より多くのアドバイスを得ることができます。