OVH Cloud OVH Cloud

Acceder a un serveur COM

6 réponses
Avatar
Alain
Bonjour,

J'ai créé un serveur COM, nommé ServeurUn.

Depuis VB, je puis l'activer avec:
MonServeur = New ServeurUn.ServeurUn

Mais de cette façon, je crée chaque fois une nouvelle instance du serveur.

* Comment peut-on détecter si le serveur est déjè actif?
* S'il est actif, comment s'y connecter?

Merci.

Alain

6 réponses

Avatar
Gerald
Bonjour,
Il faut l'intégrer dans le gestionnaire de composants windows
panneau de config / outils d'administration / service de composants ...
ajouter ta dll
windows ne l'instanciera qu'une fois







"Alain" a écrit dans le message de news:
An5cg.2085$
Bonjour,

J'ai créé un serveur COM, nommé ServeurUn.

Depuis VB, je puis l'activer avec:
MonServeur = New ServeurUn.ServeurUn

Mais de cette façon, je crée chaque fois une nouvelle instance du serveur.

* Comment peut-on détecter si le serveur est déjè actif?
* S'il est actif, comment s'y connecter?

Merci.

Alain


Avatar
sam
Bonjour,
je vient d'essayer ta méthode mais sa ne marche pas, vous pouvez me
décrire les étapes SVP.ça fait une semaine que j'essaye de faire une
application DCOM avec VB.NET, mais ça ne marche pas.
Avatar
Gerald
Démarrer / Panneau de configuration / outils d'administration / Services de
composants
La MMC s'ouvre
Dans l'arborescence
Racine de la console /
Services de composants /
Ordinateurs /
Poste de travail /
application COM+

Menu contextuel, choisir Nouveau / Application
Une fenêtre s'ouvre et 2 boutons sont présents : choisir application
Vide (lui donner un nom, par exemple "FOO" , lol) en prenant soin de
sélectionner l'option Processus serveur
Va jusqu'au bout du wizard

Ensuite, théoriquement, ton nouveau noeud (FOO) est rajouté dans la liste
des applications COM+ de l'arborescence du treeview
sélectionne le sous/noeud Composant
menu contextuel (click droit) choisis Nouveau / composant
dans le choix proposé, sélectionner celui qui correspond, si ta dll est
enregistrée (regsvr32), windows te la proposera dans la liste, sinon choisir
installer de nouveaux composants)

Voila, ton encapsulation vient d'être effectuée
lorsque tu feras appel à ton composant, l'icone de foo se mettra à tourner,
c'est sympa

J'espere avoir ete clair

A +

Gerald


















"sam" a écrit dans le message de news:

Bonjour,
je vient d'essayer ta méthode mais sa ne marche pas, vous pouvez me
décrire les étapes SVP.ça fait une semaine que j'essaye de faire une
application DCOM avec VB.NET, mais ça ne marche pas.
Avatar
sam
Merci beaucoup pour ta réponse.
ça ma sauver. et est ce que tu sait comment je peut appeler ce
composant à partir d'une machine distante.
Merci
Avatar
Gerald
Il me semble logique que seul le serveur puisse instancier ton composant
pour une application client/serveur.
Je ne vois pas à quoi peut servir ton composant, eclaire moi

...

A+






"sam" a écrit dans le message de news:

Merci beaucoup pour ta réponse.
ça ma sauver. et est ce que tu sait comment je peut appeler ce
composant à partir d'une machine distante.
Merci
Avatar
sam
voici mon prbléme,
j'ai créer un composant COM avec VB.net et j'ai lui enregistrer en
utilisant regasm puis gacutil.
j'ai créer une application client qui utilise ce composant en ajoutant
le composant aux référence.
puis j'ai utiliser un projet de configuration et déploiment pour
amener l'application client sur une autre machine.
une fois je lance le prgramme ça marche. mais je voit pas qu'il
s'agit d'un client serveur mais une application locale.(car je voie
l'heur de la machine locale).
mon serveur contient le code suivant:
<ComClass(DCOMDemo2_Svr.ClassId, DCOMDemo2_Svr.InterfaceId,
DCOMDemo2_Svr.EventsId)> _
Public Class DCOMDemo2_Svr

Public Function ServerTime() As String

ServerTime = TimeOfDay
End Function


#Region "COM GUIDs"
' Ces GUID fournissent l'identité COM pour cette classe
' et ses interfaces COM. Si vous les modifiez, les clients
' existants ne pourront plus accéder à la classe.
Public Const ClassId As String =
"EC31DD57-F7B2-44FB-98F5-CF5CB16C690A"
Public Const InterfaceId As String =
"DBDD5774-95D7-4719-B8D3-F7C5A8E1DD5A"
Public Const EventsId As String =
"404560F1-F19A-4988-8D5C-2A9315F33E7F"
#End Region

' Une classe COM pouvant être créée doit avoir Public Sub New()
' sans paramètre, sinon, la classe ne sera pas
' inscrite dans le Registre COM et ne peut pas être créée
' via CreateObject.
Public Sub New()
MyBase.New()
End Sub

End Class

et le client le code suivant:

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

Public Sub New()
MyBase.New()

'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

'Ajoutez une initialisation quelconque après l'appel
InitializeComponent()

End Sub

'La méthode substituée Dispose du formulaire pour nettoyer la
liste des composants.
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

'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur
Windows Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.

'Ne la modifiez pas en utilisant l'éditeur de code.
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(48, 96)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(184, 40)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Run"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "DCOMDemo2_Cli"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MonObjet As DCOMDemo_Svr.DCOMDemo2_Svr

On Error GoTo err
'MonObjet = CreateObject("DCOMDemo_Svr.Class1")

MonObjet = New DCOMDemo_Svr.DCOMDemo2_Svr


MsgBox("Heure du serveur =" & MonObjet.ServerTime & _
"heure du client =" & TimeOfDay)
Exit Sub
err:
MsgBox(" la connexion a échoué : Erreur " & _
Err.Number & "-" & Err.Description)

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

End Sub
End Class

merci de m'aider