Newsgroup: it.comp.lang.visual-basic
Titolo: Distruzione e scaricamento (no caching) di componenti ActiveX

Sono alle prese con un componente OCX che permette di creare un file
PDF partendo da un file doc, xls, p7m (firma digitale), e altri tipi
di documento supportati da Acrobat.
Il componente, permette di scegliere un file, doc o anche pdf, e lo
visualizza all'interno dello stesso, grazie all'inclusione del
componente pdf.ocx  di Acrobat.
Quindi, attraverso wininet invia il file pdf così ottenuto ad un
server che provvederà ad immagazzinarlo nella base dati destinata.
Allora, nell'evento Initialize, apro Word e Acrobat.
Nell'evento Terminate del mio UserControl provvedo a chiudere
debitamente tutti e due.
E il problema si verifica quando aggiorno la pagina jsp della mia
applicazione che ospita il componente ActiveX: ora, l'activex risponde
correttamente a tutte le funzionalità, tranne quando cerco di caricare
un file.
Aperta una commonDialog, e scelto il file, il componente dovrebbe
provvedere al caricamento del pdf ottenuto dalla conversione, ma
questo non succede.
Se però chiudo IE6.0 e rilancio la pagina contenente il componente
ActiveX, allora tutto torna come nuovo e non si verificano errori,
almeno fino al prossimo aggiornamento della pagina.
Non so se sia possibile, ma vorrei riuscire a distruggere, o almeno a
scaricare dalla memoria, il componente ad ogni aggiornamento della
pagina jsp.
Come si fà ?
Luigi Belli 
QFORT.IT

pagina jsp.
Potresti provare a mettere il solo activex in una finestra separata.
In pratica, selezionato il file, fai una window.open() o
showModalDialog() della pagina con l'activex.  Scegli tu
se chiudere l' eventuale finestra gia'  aperta o aprirne
un'altra. 
Con la chiusura della finestra aggiuntiva dovresti riuscire
a scaricare l'activex.
Se non si scaricasse anche cosi' prova ad usarlo in un programmma
desktop di test per verificare meglio cosa succede, magari scrivendo
in un file di log quello che fai (Initialize, Terminate, CreateObject
e via discorrendo).
Se non ne esci nemmeno cosi' passa alle maniere forti con il 
debugger ;-)
-- 
ciao, hal

...


il debugger č nell'IDE di VB. Hai mai messo un breakpoint nel codice con F9
oppure non hai mai cliccato su "Debug" quando c'č un errore di run-time
durante l'esecuzione dall'IDE di VB?
Ecco, vedi il codice con una riga gialla che indica il punto in cui si č
interrotta l'esecuzione....
questo č il debugger.....niente di piů!!!!!
:-)
good coding!!!
-- 
Damiani Liborio Igor
ig...@igordamiani.it
 - 
soft...@igordamiani.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

  good coding!!!
Ho provato entrambi le soluzioni da te proposte, anche perchè il debug
nativo di VB è chiaramente stata una delle prime prove che ho
effettuato, ed il breakpoint non mi aiuta a scoprire il problema.
In realtà, ho notato che tramite un file di log per il tracing delle
operazioni compiute dal componente, delle volte Acrobat.exe non viene
chiuso e questo provoca l'errore che dicevo.
Ora, inizializzando l'acrobat ad ogni digitalizzazione del file va
tutto OK, anche dopo il refresh, ma mi compare sempre la schermata di
avvio di Acrobat, quella che "carica" l'ambiente Adobe, sebbene lo
renda invisibile.
Non c'è modo insomma di KILLARE l'acrobat.. 
Pensavo però che se fosse possibile sfruttare un metodo tipo
onBeforeUnload(javascript) che intervenga prima del Terminate
dell'OCX, in questo modo avrei il tempo necessario per terminare sto
c***o di Acrobat che stenta a chiudersi nel tempo destinato all'evento
Terminate.
Non so se sia possibile, ma esiste un metodo che viene richiamato
prima del Terminate ?

prima del Terminate ?
Dovresti trovare il modo di sapere tu quando dovrai terminare
l'oggetto.
Ad esempio in un evento onunload() della pagina chiamare un tuo metodo
Destroy che faccia il lavoro di pulizia.
-- 
ciao, hal