Hej! Det finns inga activex kontroller i .NET. Jag antar att du bara vill göra en klass som du kan återanvända i en windows app (rätta mig om det är fel uppfattat). Mao skapa ett class library i VS.NET Tack för ditt svar.ActiveX kontroller asp.net(vb.net)
Jag håller på med ett ex-jobb där jag använder .NET-Remoting. Jag har nu kört fast på hur jag gör ett "activex objekt" som skall innehålla remoting klienten.
Jag har en en fungerande konsolapplikation. som jag tänkt att göra om till .VB "activeX"
Men vilken typ av projekt skall jag göra den i Visual Studio ?
Någon vänlig skäl som kan ge mig ett förslag, eller sett någon exempel-app på något liknande..
Mvh Tomas Sv: ActiveX kontroller asp.net(vb.net)
Beroende på hur din server ser ut kan man väl tänka sig nått sånt här (din kod läggs i []):
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.TCP
Namespace MyRemoteEx
Public Class Client
Dim chan As TCPChannel
Sub New()
chan = New TCPChannel()
ChannelServices.RegisterChannel(chan)
End Sub
public Sub GetValue(ByRef obj as [ditt interface])
obj = CType(Activator.GetObject( _
Type.GetType("[ditt namespace.interface],share"), _
"tcp://localhost:[port]/[din endpoint]"), [ditt interface])
End Sub
End Class
End NamespaceSv: ActiveX kontroller asp.net(vb.net)
Men mitt problem är detta.
Jag försöker att få en remoting klient som ett Axtivx Objekt(remoting klienten ska exekveras på klinetsidan). Jag har ett färdigt serverobjekt som är byggt i VB, och nu ska jag få till en Webbapplikation som kan komunisera med servern.
Det är denna kod jag skulle vilja ha som ett "ActiveX objekt". Nu är det bara en konsollapplikation som jag tagit från en bok.
På webbsidan hos klienten skall 4 numeriska värden precenteras, dessa kommer från serversidans objekt.
Imports System
Imports General
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Channels
Module Client
Sub Main()
Dim channel As New HttpChannel()
ChannelServices.RegisterChannel(channel)
Dim mgr As ICustomerManager = CType(Activator.GetObject( _
GetType(ICustomerManager), "http://172.21.165.84:1234/CustomerManager.soap"), _
ICustomerManager)
While (2 > 1)
Console.WriteLine("Client.Main(): Reference to CustomerManager acquired")
Dim cust As Value = mgr.getValue(4711)
Console.WriteLine("Client.Main(): Returned Values are: {0} {1} {2} {3}", _
cust.value1, cust.value2, cust.value3, cust.value4)
Console.ReadLine()
End While
End Sub
End Module
Har någon nått förslag hur jag gör om detta till en "ActiveX" objekt som exekveras på klienten, som jag kan kommunisera med från en webbsida på klient.
Här är server objektet:
--------------------------------------------
Option Explicit On
Imports System
Imports General
Imports System.Data
Imports System.Runtime.Remoting
Imports System.Data.OleDb
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Channels
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(48, 24)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(104, 23)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Server is Running:"
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(160, 24)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(32, 16)
Me.Label2.TabIndex = 1
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(296, 77)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Label2, Me.Label1})
Me.Name = "Form1"
Me.Text = "Remoting Server"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim chnl As New HttpChannel(1234)
Dim count As Int16
ChannelServices.RegisterChannel(chnl)
RemotingConfiguration.RegisterWellKnownServiceType( _
GetType(CustomerManager), _
"CustomerManager.soap", _
WellKnownObjectMode.Singleton)
Label2.Text = count
End Sub
Class CustomerManager
Inherits MarshalByRefObject
Implements ICustomerManager
Public Function getCustomer(ByVal id As Integer) As Value Implements ICustomerManager.getValue
Dim tmp As New Value()
Dim conNW1 As OleDbConnection
Dim cmdSelect1 As OleDbCommand
Dim Data As OleDbDataReader
Dim strSQL1 As String
Dim strCon As String
Try ' errorhantering
strCon = "Provider=SQLOLEDB.1;Password=wnimda;Persist Security Info=True;User ID=sa;Initial" & _
" Catalog=labb;Data Source=WST00826;Use Procedure for Prepare=1;Auto Translate=Tr" & _
"ue;Packet Size=4096;Workstation ID=WST00826;Use Encryption for Data=False;Tag wi" & _
"th column collation when possible=False"
strSQL1 = "SELECT * FROM tank"
conNW1 = New OleDbConnection(strCon)
cmdSelect1 = New OleDbCommand(strSQL1, conNW1)
conNW1.Open()
Data = cmdSelect1.ExecuteReader()
While Data.Read
tmp.value1 = Data.Item("temp1")
tmp.value2 = Data.Item("temp2")
tmp.value3 = Data.Item("temp3")
tmp.value4 = Data.Item("temp4")
End While
Finally
conNW1.Close()
End Try
Return tmp
End Function
End Class
End Class
/Tomas