| Gianluca Mariani |
Richiamare DLL da VB6 di VB.NET
Problemino....
Ho costruito una DLL in VB.NET che visualizza una schermata di ricerca. Questa schermata di ricerca deve esere richiamata da un programma fatto completamente in VB6. Quindi il programma principale è ahimé sviluppato in VB6 e deve richiamare alla pressione di un pulsante la mia dll fatta in vb.net. Questa dopo opportune query e impostazioni alla pressione di un pulsante deve restituire al programma principale una variaible. Premesso che non conosco per niente VB6 (ma ho qualcuno che mi farebbe la modifica al codice originale di VB6 che lo conosce estremamente bene) sapete se è fattibile e nel caso come? Grazie Gianluca |
| Vincenzo Nudo |
Re: Richiamare DLL da VB6 di VB.NET
Ciao
certo è possibile. Prova a cercare nell'MSDN "Regasm.exe". Io c'ero riuscito ma sinceramente è passato un pò di tempo e non ricordo bene.... Ciao |
| Corrado Cavalli [MVP] |
Re: Richiamare DLL da VB6 di VB.NET
Yes, aggiungi alla/e classi della tua dll l'attributo ComClass(...), abilita RegisterForComInterop tra le proprietà dle progetto, compila e poi da VB6 imposta un riferimento alla tua dll (che verrà vista da VB6) e usala... HTH -- Corrado Cavalli [Microsoft .NET MVP-MCP] UGIdotNET - http://www.ugidotnet.org Weblog: http://www.ugidotnet.org/710.blog ---------------------- Questo messaggio è stato postato da microsoft.public.it.dotnet.vb. |
| Claudio Burini |
Re: Richiamare DLL da VB6 di VB.NET
Anche io avevo già chiesto una cosa simile e mi aveva già risposto Corrado in modo molto dettagliato ed efficiente. Prova a fare una ricerca nei post, troverai tutto ciò ce cerchi.
Ciao |
| Gianluca Mariani |
Re: Richiamare DLL da VB6 di VB.NET
Ogni tanto torno con questo problemino...
Allora ho dato tutto come mi avere detto e questo e quello che mi risponde lo sviluppatore VB6 "In effetti posso registrare nei riferimenti di vb la dll che mi hai mandato, ma non riesco comunque ad utilizzarla perché in vb avviene un errore di creazione dell'oggetto. Non so se è colpa del framework (che comunque io ho già installato (v. 1.1)) o altro. In ogni caso quando definisco una variabile oggetto di tipo "la tua dll" la variabile viene creata ma se tento di utilizzarla mi dice che il componente activex non può creare l'oggetto. Comunque quanto istanzio la variabile, vb mi mostra "login" ed "errore" come classi dell'oggetto ma queste classi sono senza metodi o proprietà." E' ovviamente una finestra modale.... avete qualche suggerimento su come mai mi succede questo? Tenete conto che ovviamente c'é una metodo pubblico chiamato MOSTRA che non fa altro che visualizzare il form della classe.... Sono disperato...un aiutino ci vorrebbe. Gianluca Gianluca |
| Gianluca Mariani |
Re: Richiamare DLL da VB6 di VB.NET
Ciao ragazzi,
scusate non ho fatto in tempo a postare prima. Allora ho preso la mia DLL e: 1) Sono andato in "Proprietà -- Proprietà di DLL_PROVA" 2) Ho selezionato "proprietà di configurazione" 3) Ho selezionato Generazione 4) Ho flaggato "registra per interoperabilità COM" 5)Ho aggiunto questo codice alla classe: (trovato in MSDN) #Region "COM GUIDs" ' These GUIDs provide the COM identity for this class ' and its COM interfaces. You can generate ' these guids using guidgen.exe Public Const ClassId As String = "7666AC25-855F-4534-BC55-27BF09D49D46" Public Const InterfaceId As String = "54388137-8A76-491e-AA3A-853E23AC1217" Public Const EventsId As String = "EA329A13-16A0-478d-B41F-47583A761FF2" #End Region Public Sub New() MyBase.New() End Sub 6)Compilato e dato il tutto a chi deve integrare in VB6. Domande: 1) Ho sbagliato qualcosa? 2) Manca qualcosa? 3) Nel caso la risposta sia NO come deve fare il tipo per istanziare in VB6 la mia DLL? (un po' di codice please) deve passargli dei parametri e prenderne uno dalla DLL stessa. Mi dice che non ci riesce (lui è molto più esperto di me in programmazione) quindi presumo di aver sbagliato qualcosa io! Grazie mille dell' aiuto!!!! Gianluca |
| Gianluca Mariani |
Re: Richiamare DLL da VB6 di VB.NET
Ho cercato ma non ho trovato nulla....che sia stato cancellato?
Gianluca |
| Claudio Burini |
Re: Richiamare DLL da VB6 di VB.NET
Sì...tutto giusto.
Eventualmente fai attenzione di aver impostato nelle proprietà il COM Interop anche nella versione Release (se la imposti da Debug, poi non rimane nella Release...devi impostarlo tu). Che genere di errore gli da? |
| Raffaele Rialdi |
Re: Richiamare DLL da VB6 di VB.NET
> Ho cercato ma non ho trovato nulla....che sia stato cancellato?
Hai cercato anche nell'archivio? Raffaele |
| Gianluca Mariani |
Re: Richiamare DLL da VB6 di VB.NET
Ho fatot tutto giusto?!? :-D Allora forse comincio a capirci qualcosa!
Allora, mi dice (non è nella mia azienda ovviamente e devo comunicare con lui tramite mail) che non riesce ad istanziare la dll in nessun modo e mi chiede documentazione per farlo....non riuscite a darmi una mano con un po' di codice? Io gli ho mandato la versione compilata non come release ma debug ma non penso che questo possa generare un problema.... Gianluca |
| Claudio Burini |
Re: Richiamare DLL da VB6 di VB.NET
Sì...il fatto che gli hai mandato la versione debug potrebbero esserci problemi ma non penso che sia questo il suo problema. Inoltre devi dargli anche il tlb e quant'altro generi (ha il framework sulla macchina su cui la usa? Nella tua dll usi altri riferimenti? Ovviamente devi passargli tutto...potresti fare anche una mini installazione se proprio ti vuoi semplificare la vita)
Prova a fargli fare questo percorso e poi fatti dire quali problemi ha: Da vb6...Includi nuovo riferimento...sfoglia...selezioni il file .tlb compilato della tua dll. Ti dovrebbe apparire nell'elenco il tuo componente. Selezionalo e poi premi su ok. Così facendo l'oggetto è nel suo progetto. Le istanze si creano come le normalissime istanze. Dovrebbe filare tutto liscio...se ci sono problemi riporta il problema specifico altrimenti è 1 po' difficile fare esempi... Per il codice...non c'è niente di particolare da scrivere...devi solo seguire le procedure per inserire la dll nel progetto per il resto è tutto uguale...niente di speciale: dim x as new Classe oppure dim x as new ProgettoDLL.Classe a seconda di come è fatto il progetto. |
| Claudio Burini |
Re: Richiamare DLL da VB6 di VB.NET
Io ti consiglierei di procedere per gradi...prima di tutto prova con un esempietto per capire se quello che fai va effettivamente bene. A questo scopo ti allego un esempio. Dopo di che inserisci il tutto nel tuo progetto.
Sinceramente comunque penso che l'errore generato non dipenda dalla tua dll che viene richiamata in vb6 ma ad un errore vero e proprio di qualche altro oggetto contenuto in essa...cmq non avendo altri riferimenti non ti so dire altro. Rimango comunque del parere che per sicurezza potresti crearti un pacchettino di installazione in modo da essere sicuri di portarsi a spasso tutto quello che riguarda la tua dll. |
| Gianluca Mariani |
Re: Richiamare DLL da VB6 di VB.NET
Intanto grazie Claudio,
Potresti inviarmi l' allegato in posta? (Gianluca@simmm.com) purtroppo da Web mi dice che l' archivio non è valido. Con quel tuo esempio vediamo se ci si riesce. Gianluca |