Newsgroup: it.comp.lang.javascript
Titolo: Creare Istanza dll

Ciao a tutti,
Ho cercato sia sul newsgroup che su internet, ma non ho trovato ancora la
soluzione.
Ho una dll (non com, quindi non da registrare) da richiamare dalla mia
pagina asp con javascript, la dll contiene funzioni varie (es. Somma)
Ho copiato la dll sia nella cartella del file .asp che in
c:\winnt\system32 (uso Win200 Server), poi ho scritto:
var myobject;
myobject = new ActiveXObject("File.dll");
e mi restituisce questo errore:
"Automation server can't create object"
Come faccio per istanziare la dll e richiamare le relative funzioni?
Grazie a tutti per l'aiuto e buona settimana!
Kate
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 myobject = new ActiveXObject("File.dll");
Penso che così non possa funzionare. Da javascript non puoi richiamare 
dll, al massimo, con IE, puoi istanziare oggetti ActiveX registrati nel 
sistema.
Questo significa che la tua dll dovrebbe in realtà contenere una o più 
definizioni di oggetti COM ActiveX, non semplici funzioni altrimenti nisba.
Devi registrare i componenti ActiveX presenti nella dll con il comando:
regsvr32 nomedll
Nel tuo javascript a questo punto puoi istanziare oggetti del tipo 
dichiarato nella dll con qualcosa di simile a:
var myobject = new ActiveXObject( "TipoOggetto" );
Avrai in ogni caso problemi di sicurezza, minimo minimo devi trastare il 
sito, ed in ogni caso ti darà qualche warning. Meglio è se lo 
distribuisci tramite sito; in questo caso con le opportune signature del 
codice riesci a fare qualcosa di accettabile.
Ciao.
	-Ema-

 Come faccio per istanziare la dll e richiamare le relative funzioni?
Il punto e' che non c'e' nulla da "istanziare" perche' la tua DLL non
contiene oggetti, bensi' fa da mero contenitore di funzioni.
Puo' essere usata solo in linguaggi che prevedono la dichiarazione di
funzioni esterne.
Se vuoi usarla, devi trasformarla in ActiveX. In modo che ci sia un oggetto
che faccia da contenitore, e le funzioni che ti interessano siano metodi di
quest'ultimo.
-- 
ZER0
~ The Tangent Universe collapsed 5923 days, 4 hours, 50 minutes and 46 seconds ago.

 	-Ema-
Ciao Ema,
innanzitutto grazie per la risposta...
quando tento di registrare la dll ricevo questo errore:
"file.dll was loaded, but the DllRegisterServer entry point was not found"
Per i problemi di sicurezza non è un problema, in quanto gli utenti hanno
tutto l'ambiente già installato e predisposto al corretto utilizzo.
Il mio obiettivo è utilizzare una funzione della dll (non creata da me,
quindi non ho il sorgente) dal lato client.
La vedo male...


 quest'ultimo.
Ciao Zero,
grazie per l'aiuto, il problema è che la dll non l'ho creata io quindi non
ho il sorgente, cercherò di trasformarla in ActiveX, come mi hai
consigliata...
Grazie!


 
Devi scrivere un oggetto ActiveX che richiama le funzioni della dll. 
Dipende dal numero e dalla complessità delle funzioni ma non dovrebbe 
richiedere più di mezza giornata di uno sviluppatore che abbia un minimo 
di esperienza nella realizzazione di ActiveX.
Ciao.
	-Ema-

 	-Ema-
Ok, molte grazie, sei stata molto chiara!
Proverò a seguire questa strada..
Grazie ancora e buon lavoro!
Kate


 ho il sorgente, 
Questo non e' un problema. Puoi usare Visual C++ o Visual Basic (ad
esempio, ma anche Delphi o altro) per creare una DLL che fa da Wrapper.
Difatti nei linguaggi sopracitati puoi benissimo importare delle funzioni
da una DLL esterna. Quindi non faresti altro, nella tua nuova DLL (che
sara' un ActiveX) dichiarare le funzioni esterne dell'attuale DLL, e poi un
oggetto che ha dei metodi, che altro non fanno che richiamare tali funzioni
esterne.
In sintesi, non hai bisogno di avere il sorgente. Crei un'ActiveX che ti
faccia da "ponte" tra la DLL statica e la tua applicazione.
-- 
ZER0
~ The Tangent Universe collapsed 5923 days, 5 hours, 17 minutes and 46 seconds ago.

 Ok, molte grazie, sei stata molto chiara!
hemmm ... perchè pensi che io sia di sesso femminile? Ok non ho i 
baffoni ma nessuno ha mai messo in discussione la mia virilità. :-P
Ciao.
	-Ema-

 baffoni ma nessuno ha mai messo in discussione la mia virilità. :-P
:-)
E' il nome che frega, anch'io l'unic[o] Ema che conosco personalmente è
donna (quindi *la* ema)
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 
Si ma nota che il mio nik è -Ema- non Ema. Secondo te quelle due 
lineette orizzontali cosa sono? ... no, non quello che hai immaginato. 
Sono i baffoni! :-D
-Ema-

 -Ema-
Vabbè, avevo il 50% delle possibilità, è andata male...
Ciao a -Ema- (uomo)


 > Ciao Zero,




Grande!
Provo...
Ciao ciao!


 Sono i baffoni! :-D
Ma se hai appena affermato che non ne hai? ^_^;
Cmq non preoccuparti.. Anche a me una volta mi scambiarono per donna..
.. successe anni fa su IRC, e - sinceramente - ancora ho da capire come il
mio nick possa aver fatto venire in mente certe idee.
Probabilmente era solo un poveraccio che stava *sistematicamente*
tampinando tutti gli utenti della chat in cerca di qualche donzella..
-- 
ZER0
~ The Tangent Universe collapsed 5923 days, 5 hours, 47 minutes and 45 seconds ago.

 Vabbč, avevo il 50% delle possibilitŕ, č andata male...
Gia', e' andata male pure a noi.. nel senso che avremmo preferito unA Ema.
^_^
-- 
ZER0
~ The Tangent Universe collapsed 5923 days, 5 hours, 48 minutes and 57 seconds ago.