|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
[VB6] Creazione PlugIn per Applicazioni
Raga mi chiedevo se era possibile, ma penso di si, e come si faceva a creare:
1) Una applicazione che potesse essere aspandibile tramite plugin 2) creare plugin per un'applicazione questo in VB6...non riesco a trovare info su internet...qualcuno ne sa qualcosa?
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe i plug in sono a volte solo delle dll aggiunte che il software riconosce e aggiunge una funzione nel menu... tanto un dll può contenere tutte le cose che contiene un normale progetto per exe, quindi anche le form.
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
e da queste DLL posso far richiamare funzioni che si trovano in altre dll che usa il mio progetto normalmente senza dichiarare nessuna nuova referenza?
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Sinceramente nn ho mai provato a richiamare un dll dentro un'altra dll... fai delle prove e poi fammi sapere...
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Matpez tu che te ne intendi...sarebbe possibile creare un programma che si "autoespande"?
Una sorta di plugin...ma è diversa la mia idea..tipo un programma che legge da un file di testo delle righe di codice: Codice:
if a>b then ... nn so se mi son spiegato bene...
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Al suo interno no, perchè dovresti ricompilarlo con il nuovo codice..
...io ho visto i plug in di nero usano delle dll, poi al suo interno va a sapere cosa richiamano, ma sicuramente le form che compaiono dopo aver messo il plug in
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
come facci a far partire la form che sta in un plugin?
tipo io creo una DLL PLUGIN che contine: FORM MODULO (è un modulo base che mi serve x l'interfacciamento con un'altra dll che mi permette di collegarmi ad una periferica usb) ora come faccio dal mio programma a far partire la form di quella DLL? So come far creare un nuovo menu nel mio programma dove compare, nella lista del menu, il nome per richiamare quella dll...a questo ci posso arrivare
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC Ultima modifica di leadergl : 05-07-2005 alle 13:25. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe ma tu devi già prevedere che la tua applicazione avrà dei plug-in, poi il meno lo visualizzi o no a seconda se trovi la dll
Per visualualizzare una form basta che rischiami una funzione del tuo modulo che abbia il comando frmxxx.show
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#9 | ||
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Quote:
Quote:
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
||
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
|
Infatti potresti aggiungere nuove dll che contengono nuove funzioni per il programma, ma come è stato giustamente detto, il programma deve essere stata progettato per ricevere plugin, in modo da poter effettuare le chiamate alle nuove funzioni.
__________________
Careful With That Axe |
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Quote:
Quote:
gli faccio fare la ricerca di tutti i files in una dir e li aggiungo ad un menu? (menu che quindi avra una determinata index...a seconda del numero di elementi e poi faccio tipo: Codice:
Private Sub mnuPlugIn_Click(Index As Integer) 'considerando che tutti i plugin avranno un modulo comune 'dove ci sta la funzione "InizializzaForm" '...che ci metto qui... End Sub
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
||
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
allora...mi sto mentalmente avvicinando...
mi servono: 1) una struttura che mi consenta di salvare alcune informazioni sul PlugIN che sto aggiungendo...tipo: Codice:
Type PLUG_STR
Plugin_Path as string
Plugin_Name as string
End Type
2) un array del tipo PLUG_STR dove conservare le info per ognuno dei plugin trovati 3) una procedura/funzione che quando clicco sull'elemento del menu che verrà creato ed associato all'elemento nell'array di prima mi permetta di creare una referenza al PlugIN giusto...una cosa del tipo: Codice:
Public Function CreaReferenza(indice: integer) ...e qui dentro creo la referenza... ...posso creare la referenza ad una dll da qui?... Public NUOVADLL as New NOMEREFERENZA ma in questo caso come si fa?
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Ecco a te un bel esempio.. miraccomando segui quello che ti dico:
La cartella Exe contiene tutto quello che serve a te, prima di tutto come qlc ActiveX che si rispetti lo devi registrare, quindi trascina la dll sopra a regsvr32 Una volta fatto questo ricorda che la registrazione viene fatta nella path in cui sti trova, se sposti la path, rinomini o fai cose varie va riregistrata... A questo punto, prendi la dll e la metti dove vuoi tu, magari sul desktop, lasciando l'eseguibile senza la sua dll... lancialo e premi il bottone, dovrebbe segnalarti un messaggio di errore, cioè che nn trova il tuo plug-in ... Adesso chiuedi tutto, metti la tua dll assieme all'exe e lo rilanci, premendo sul pulsante si aprirà una form completamente a se stante dal progetto, unica caratteristica che si chiude con la form che lo ha lanciato (giustamente) Fai queste prove e poi guarda i sorgenti, così ti fai un idea più chiara di tutta la faccenda!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
come al solito impeccabile
sei un mito...grazie a te ho imparato tante cose sul VB (P.S. x caso hai un cellulare motorola? se si...dammi sta soddisfazione...vedi i miei progressi in VB6..vai su http://www.leadergl.net e scaricati il FlexEditor 9.5F ...mi piacerebbe sapere che ne pensi
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Matpez ho problemi con la compilazione del codice....nel senso che nn riesco a creare l'exe...mi dice libreria non trovata...
inoltre come faccio nel caso in cui ho più PlugIn? Tu hai impostato: Codice:
Dim mcPlugIn As Plug_In.Class1
Set mcPlugIn = New Plug_In.Class1
Call mcPlugIn.EditaLabel
Set mcPlugIn = Nothing
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC Ultima modifica di leadergl : 05-07-2005 alle 23:38. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe, inanzitutto per compilare devi impostare nelle referenze le dll usate dal tuo programma, poi come seconda cosa per impostare + plugin basta che fai + dll hehehe
Per quanto riguarda il nome, di solito un utente non dovrebbe toccare i nomi dei componenti di un programma, ma tanto la dll anche se si chiama con un nome diverso, lui usa il nome dell'applicazione con cui hai compilato la dll. Per il resto, come ti avevo già detto, fai un pochettino di prove, paciocca un pochetto, fai tentativi, altrimenti ci sentiamo domani per ulteriori informazioni Notte PS: pultroppo ho tutti sony-ericsson
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein Ultima modifica di matpez : 05-07-2005 alle 23:54. |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Forse io ho corso troppo, ma tu hai mai creato una dll, sai cos'è la compatibilità binaria?
Va bhe, cmq se nn lo sai te lo dico domani, adesso sono stanco e domani si lavora tutto il giorno attaccato a sto piffero di VB ehehhehe byebye
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Quote:
si, creato Dll....ma non so cosa sia la "compatibilità binaria" o magari non so che si chiama così...ok...domani mi illumini
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
La compatabilità binaria è quella compilazione che ti permette di mantenere la compatibilità con la dll che avevi fatto prima.
La compatabilità binaria ti permette di non dovere tutte le volte ricreare l'eseguibile che utilizza la tua dll, altrimenti che caxxo serve avere una dll? heeheh Per esempio se tu nella dll avessi tutti i calcoli per un software che fa paghe, poi esce l'euro e tu senza sbatterti più di tanto a ricompilare tutti i sorgenti di chissà quanti programmi, basta che ricompili la dll con la dovuta conversione in euro. Ma se nn avessi la compatibilità allora il lavoro sarebbe vano, perchèi tuo exe non ti riconoscerebbero più la libreria. Per parlare un po' più tecnicamente, tu sai che nel registro ci sono degli identificativi di classe, quelli che sono fatti così: {000214EE-0000-0000-C000-000000000046}, praticamente quello è un identificativo che gli oggetti come le dll creano al momento della registrazione tramite il regsvr32 o tramite il setup del tuo software quando registra i componenti. Se tu non hai la compatibilità lui ogni volta che compili ti ricrea un CLSID e quindi il tuo exe non trova il riferimento nel registro, se tu hai la compatibilità (dove possibile) lui riutilizza lo stesso CLSID e quindi i tuo exe sia da te che dall'utente funzionano dandogli la tua dll aggiornata e senza nemmeno avere più il bisogno di registrarla. Detto questo che è solo un aiuto per utilizzare le dll, cerca di fare funzionare e di capire il mio esempio, dato che da me funziona e poi se hai altri dubbi gli esponi. ciaoooooooooooooo
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Ottima informazione...mi hai fatto scoprire una cosa nuova
Ed ho anche compilato il tuo progetto...solo che rimane la domanda: 1) "nel caso chi crea la DLL cambia il nome del progetto come faccio a farla identificare dal programma?" 2) (poi ci sarebbe questa) io vorrei fare una cosa di questo tipo: <ul type=disc><li>Analizzo la directory "Plugin" in cerca delle DLL <li>A seconda del numero di DLL creo un menu dinamico che mi contenga un nome (diverso) per ogni DLL <li> Quando uno clicca sul nome della DLL si apre la form corrispondente </ul> ecco quello che mi chiedo è...avendo tutti nomi uguali come faccio a distinguere le varie dll?
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:40.



















