Newsgroup: it.comp.lang.visual-basic
Titolo: programma "a plugin"

ragazzi quando mangio pesante e non dormo mi sorgono delle idee..
è possibile creare con VB un programma a plugin installabili (come ad es
winamp?) 
mi dareste qualche "dritta" dove reperire informazioni ?
grazie

 ha scritto nel messaggio
news:1t2oznudatlxi.1...@40tude.net...


In VB puoi fare una cosa a plug-in utilizzando costruendo un
eseguibile nel quale puoi registrare dll ActiveX. Hai solo due
vincoli:
- non puoi utilizzare l'early binding (quindi, userai CreateObject)
- l'interfaccia che utilizzi per ovvi motivi deve essere ben definita
e sempre con lo stesso nome (o con lo stesso gruppo di nomi).
Ciao!
Luca


 grazie
ciaociao

 - non puoi utilizzare l'early binding (quindi, userai CreateObject)
Non è esatto.
Se implementa un interfaccia può usare anche l'early binding, quindi 
l'intellisense, e sarebbe anche il modo corretto.
Potrebbe semplicemente mettere la classe che fa da interfaccia in una 
dll e costringere i plug-in ad implementare questa.
Ciao


wrote:


 essere molti e con GUID diversi?
Partiamo da un punto fisso.
TUTTI i plug in devono avere un'interfaccia conosciuta dal chiamante, 
altrimenti il programma non saprebbe come utilizzarlo.
Quindi tu ti definisci un'interfaccia tipo
IPlugIn
 
con ad es. un metodo
Public Sub Esegui
Questa classe deve essere pubblica in una DLL in modo che sia 
disponibile a chi dovrà scrivere il plugin
Chi fa il plugin si dovrà preoccupare di fare
Implements IPlugIn
nella sua classe.
A questo punto il chiamante potrà fare:
Dim p As IPlugIn
Set p = CreateObject("FornitorePlugin.MyPlugIn")
Call p.Esegui
Ciao


Per molti intendo ' piu' di uno installato contemporaneamente e
contemporaneamente accessibile dall'applicazione'.
Ciao!
Luca


Oddio.... e questo non e' 'late binding'???????
E' esattamente quanto intendevo io!! A parte il fatto che, volendo
utilizzare piu' oggetti differenti contemporaneamente, io ho
utilizzato all'epoca:
Set p = CreateObject(strNome + ".MyPlugIn")
Forse ci siamo fraintesi sui termini.
Ciao!
Luca

 Set p = CreateObject(strNome + ".MyPlugIn")
Certo che puoi usare più oggetti contemporaneamente, altrimenti che 
cavolo di programma è che supporta _un_solo_ plugin? ;)
Ciao

No, perchè l'interfaccia è nota!
Boooh!! io sapevo che la differenza tra early binding e late binding
sta nel fatto che mentre nel primo caso il compilatore verifica
l'esistenza di un metodo o di un membro di un oggetto, nel secondo
caso non lo fa. E di fatto, se quanto ho detto e' vero, nell'ipotesi
che fai tu - che peraltro, devo dirlo, trovo molto elegante, mi secca
solo che non ci ho pensato io... ;-) - l'early binding si applica solo
ed esclusivamente sull'oggetto che tu indichi come base. Non avviene
da parte del compilatore alcun controllo su eventuali oggetti
differenti. Se poi io sono scemo e implemento in un oggetto una clase
di nome uguale ma con metodi differenti, me ne accorgo solo quando
cerco di connetterlo.
Ciao!
Luca

 cerco di connetterlo.
Se assegni con una CreateObject() ad una var. tipizzata ma non 
compatibile VB da lo stesso errore che avresti nel fare la New su un 
tipo differente dalla dichiarazione.
Ovvio che l'errore va controllato ;)
Ciao


wrote:


 esiste. E te ne accorgi a run-time -> late binding.
NNNNO! :)
Prova questo:
     Dim c As Collection
     Set c = New StdFont
Questo viene tranquillamente compilato, ma tu converrai che non è 
late-binding, anche se te ne accorgi a runtime dell'errore.
Il sistema della CreateObject è esattamente la stessa cosa.
Ciao


E ccc'hai ragione cccc'hai. 
Vedi che avevo detto che c'era un problema di termini? In effetti, mi
sono andato a rivedere i sacri testi e la differenza sta nel fatto che
si acceda via VTable piuttosto che utilizzando l'interfaccia
IDispatch.
Quando uno e' convinto di una cosa, e per di piu' 'sta cosa si
sedimenta nel tempo..... :(((((
Ciao!
Luca

 ciaociao
trovato il subjet è programma modulare ora vedo
 grazie



riordino le idee e provo +o- subito
... interessante grazie