Newsgroup: it.comp.lang.visual-basic
Titolo: Torno alla carica con la mia dll, ma ora faccio un esempio :-(

Scusate ma nonostante abbia letto tanta roba in questi giorni ancora riesco 
a risolvere il mio problema.
Chi ha la pazienza di fare un piccolo esperimento con me?
Io ci provo....
Aprite il vostro VB, create un progetto di nome "saluto" di tipo ActiveX dll
Qui dentro create una classe che chiamerete "Esegui" che contiene il metodo 
"Saluto" :
Public Sub saluto()
    MsgBox "Ciao"
End Sub
Bene ora andate in File-->Crea saluto.dll
A questo punto mettiamo saluto.dll in c:\windows\system32 e registriamolo 
con: regsvr32  c:\windows\system32\saluto.dll.
Ora create il file saluto.html che contiene quanto segue:
<HTML>
<HEAD>
<TITLE>Prova Saluto</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
dim obj
set obj = CreateObject ("saluto.Esegui")
obj.Saluto
set obj = nothing
//-->
</SCRIPT>
</HEAD>
<BODY >
Eseguo la prova....
</BODY>
</HTML>
Ok, ora se fate doppio clik su questa bagina avrete un msgbox che contiene 
la scritta "Ciao"
Ora fate questa prova, spostate saluto.html su un disco di rete se avete la 
possibilita', oppure piazzatelo su un webserer, noterete che non funziona 
piu'!!!!!! Dice che il componente ActiveX non puo' creare l'oggetto 
saluto.Esegui.
Perfavore prima di rispondere fatela questa semplice prova, vi prego non 
riesco proprio ad uscirne fuori :-(
Un grazie infinito a chi sapra' aiutarmi, o avra' semplicemente la pazienza 
di fare questa semplice prova. 

 Scusate ma nonostante abbia letto tanta roba in questi giorni ancora riesco 
A me sembra un problema di permissioni e di impostazioni di configurazione
di internet explorer.
Infatti ha delle voci specifiche per l'esecuzione di activex in
locale/rete.
Dovresti impostarle.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Dovresti impostarle.
Ovviamente queste cose le ho gia' fatte.
Hai provato a simulare l'esempio che ho postato? 

 ha scritto nel messaggio 

Sul mio registro c'è già fin troppa robaccia "di mio" senza che abbia
bisogno di aggiungere anche quella degli altri.


 bisogno di aggiungere anche quella degli altri.
Certo ci mancherebbe, ma la mia e' una dll di due righe, subito dopo un 
regsvr32  /u c:\windows\system32\saluto.dll e via, non vedo dov'e' il 
problema.
Comunque non fa nulla, aspetto fiducioso che qualcuno, anche per pura 
curiosita' faccia questa prova.
Ciao e grazie.

 ha scritto nel messaggio
news:d40338$b2r$1...@newsreader.mailgate.org...

Non è che nelle impostazioni di IE riguardanti la protezione hai "Inizializza ed
esegui script controlli ActiveX non contrassegnati come sicuri" impostato su
"Disattiva"?
Poi chiaramente la DLL deve essere installata lato client...
Bye
Raf

 Poi chiaramente la DLL deve essere installata lato client...
Se leggi meglio ti rendi conto che resvr32 l'ho lanciato ovviamente.... ma 
torno a ripetere, hai provato a simulare l'esempio riportato? 

 ma torno a ripetere, hai provato a simulare l'esempio riportato?
Sì. Sul PC di sviluppo (quello dove ho compilato la DLL) funziona a patto di
attivare quell'opzione in IE.
MA: Ho copiato l'html in una virtual directory di IIS e ho provato ad accedervi
da UN ALTRO PC.
Opzione di IE a parte, se su questo PC non INSTALLO la dll, non funziona!
Ciao
Raf

 Opzione di IE a parte, se su questo PC non INSTALLO la dll, non funziona!
Perfetto!!!! Ti ringrazio infinitamente, ora ti chiedo un ultimo sforzo..... 
mi sai dire perche'? Come posso fare una dll che funzioni semplicemente 
registrandolo sul mio pc?
Grazie 1000 di nuovo. 

 semplicemente registrandolo sul mio pc?
Abbi pazienza Davide...
Ma hai letto i quintali di documentazione che ti abbiamo fornito nei 
precedenti thread???
Dal tue domande, deduco proprio di no...
Pertanto, ti invito nuovamente a rileggere la documentazione e...
Ciao!
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca

 ha scritto nel messaggio
news:d40im6$h1$1...@newsreader.mailgate.org...

"ASP Server-side scripting". Questo è quello che ti occorre.
Il file deve innanzitutto avere estensione ".asp".
Ricorda che non è puoi di certo mostrare form o messagebox in script lato
server: infatti dovrai settare il flag "Unattended execution" nelle proprietà
del progetto ActiveX/DLL.
Ecco un esempio (una DLL con una classe che restituisce l'ora corrente):
<SCRIPT LANGUAGE="VBScript" runat=server>
dim obj
set obj = CreateObject("MyTimeServer.MyService")
Response.Write "Time on server is: " & obj.GetTime()
set obj = nothing
</SCRIPT>
Ciao
Raf

 Il file deve innanzitutto avere estensione ".asp".
Non e' vero. Si puo' richiamare un ActiveX anche da una semplice pagina 
html, senza asp, senza .net, senza IIS e porcate varie.
Basta che la ocx sia fatta in un certo modo. Non vedo l'ora di dimostrarvelo 
:-)
Ho una ocx che viene istanziata tranquillamente da una paginetta html, con 
un piccolo vbscript, la pagina ha estensione html, il server e' un Apache su 
Linux, e questa ocx ha qualcosa di "magico". Non ho il sorgente purtroppo, 
ma riesce ad essere istanziata senza problemi, senza che mi dice "Il 
controllo Actrivex non puo' creare l'ogetto ecc..." Funziona senza dll, cab, 
inf ecc.. fidatevi. Io prendo questa ocx magica, la registro con regsvr32, 
faccio una pagina html con 4 righe di vbscript... giusto per il createobject 
e per il lancio del metodo, et voila' la ocx magica fa quello che deve 
fare.... in netto contrasto con tutte le risposte che ho ricevuto fino ad 
oggi qui dentro.
Ciao. 

 Ciao.
Aggiungo che se qualcuno e' interessato possiamo continuare in privato 
questa conversazione, non vorrei che pensiate che ho preso il NG per un Help 
Desk, so bene quli debbano essere i limiti da non oltrepassare. Potrei, 
tralatro dare del materiale per dimostrare che cio' che sto dicendo e' 
sensato.
Credo che fareste bene ad approfondire questo argomento, dalle risposte che 
ho ricevuto ho la netta impressione che forse anche a voi sfugge qualcosa 
;-)

 inf ecc.. fidatevi. Io prendo questa ocx magica, la registro con regsvr32,
ALT! Non ho capito un tubo. Deve funzionare registrandola IN LOCALE oppure SUL
WEB SERVER?
Se lo script è lato client, AFAIK è ovvio che funziona, indipendentemente dalla
piattaforma del web server.
Gli scenari sono 2:
1) La DLL viene richiamata da uno script client-side
In questo caso essa deve essere *installata* su _ogni_ PC client.
Come assicurarsi di ciò è compito tuo, ad esempio puoi creare un installer
scaricabile dalla stessa pagina web etc. etc.
2) La DLL viene richiamata da uno script lato server
In questo caso non occorre installare nulla sui client, ma la DLL deve essere
installata solo sul web server, che però deve avere una piattaforma in grado di
eseguire componenti COM (come una DLL ActiveX), pertanto Windows+IIS+ASP ad
esempio.
In quale di questi casi ti riconosci???
Insomma... cosa devi realizzare?!?
Bye
Raf

 Insomma... cosa devi realizzare?!?
Una semplice ocx LATO CLIENT
Ciao.

 Una semplice ocx LATO CLIENT
No, no...
L'abbiamo capito bene e ti abbiamo dato le dritte per risolvere il tuo 
problema.
Devi utilizzare il tag OBJECT e impostare la proprietà CODEBASE facendola 
puntare al file CAB (posizionato, questo si, sul server) creato con il 
PDW.
Mi scoccia essere ripetitivo: hai gia' tutte le informazioni che ti 
servono. Rileggi i documenti ai link numerosi link che ti sono stati 
forniti nei precedenti thread.


 PDW.
Ascoltami, io non voglio scocciarti, veramente, ma io ho del materiale che 
dimostra che quello che stai dicendo none' del tutto esatto! Ora, visto che 
una persona esperta come te dice una cosa non esatta, dovrebbe farti 
riflettere sul fatto che magari qualcosa ti sfugge no? Io sto chiedendo solo 
se c'e' qualcuno con un po' di voglia/pazienza/tempo/curiosita' che vuole 
andare a fondo in questa cosa. Le tue risposte sono lo specchio dell'MSDN 
(non e' una critica ovviamente) e non credere che non l'abbia letto, ma ho 
trovato in giro qualcosa che va oltre.
Ho una semplice ocx di 32k per esempio che, come ho gia detto, e' sufficente 
registrarla con regsvr32 sul mio pc, che riesce ad essere istanziato da una 
paginetta html con un vbscript di due righe che fa solo il createobject ed 
il lancio del metodo e niente piu!
Che tu ci creda o no, io ho una ocx (miaocx) senza cab, ne inf ecc... che 
basta fare regsvr32 miaocx.ocx e lanciare la pagina seguente per 
istanziarla, come puoi vedere senza ne OBJECT ne CODEBASE, e che tu ci creda 
o no, questa pagina funziona anche se la metto su un webserver senza IIS, 
niente asp, niente .net, niente di niente.
Se vuoi metto questa pagina sul mio sito, ti do l'indirizzo, ti mando l'ocx 
tu la registri semplicemente con regsvr32 e poi vedi se funziona ok?
<HTML>
<HEAD>
<TITLE>Pagina Prova </TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
dim obj
set obj = CreateObject ("miaocx.esegui")
obj.esegui_metodo (parametro1,parametro2)
set obj = nothing
//-->
</SCRIPT>
<BODY >
Eseguo la prova.......
</BODY>
</HTML>
Niente cab, niente object niente codebase, se mi vuoi credere e hai un po' 
di curiosita' possiamo continuare in privato e ti do il materiale, 
altrimenti non ti voglio piou' annoiare, davvero, ma sappi che evidentemente 
l'MSDN non sa tutto ;-)
Ciao e grazie comunque 

 niente asp, niente .net, niente di niente.
Abbiamo scoperto l'acqua calda...
--
ciao, hal
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Abbiamo scoperto l'acqua calda...
Finalmente un illuminato ossignore!!!!
Scommetto che sei anche in grado di darmi due dritte vero? Perche' tu non 
sei di quelli che sostengono che questa cosa si possa fare solo usando 
object, codebase, cab ecc... mi sembra di capire, quindi spero che tu abbia 
la bonta' di mettere un po' del tuo sapere a disposizione dell'umanita'.
Ti prego pero', la prossima volta se fai lo sforzo di pigiare i tastini 
sulla tastiera di anche qualcosa di utile, e' troppo facile dire "Abbiamo 
scoperto l'acqua calda" e magari non hai nemmeno capito di cosa sto parlando 
no? Perche' sono convinto che se prendi l'esempio del mio primo post, lo 
replichi sul tuo pc, non sei in grado di dirmi perche' non funziona se il 
file html lo esegui dopo averlo spostato su un disco di rete, e ancor meno 
sei in grado di dirmi come risolvere il problema, o sbaglio?
Rifletti, magari la scoperta dell'acqua calda ha avuto un procedimento piu' 
complesso di quanto tu hai scoperto perche' la tua vasca da bagno ha anche 
il pomello rosso oltre a quello blu :-D
Ciao. 

 ha scritto nel messaggio
news:d40p88$987$1...@newsreader.mailgate.org...

Oooh, bene! Vediamo allora di fare ulteriore chiarezza. Confermami se la
situazione è la seguente:
- Abbiamo un PC con installata una certa DLL (o OCX)
- Abbiamo una semplice paginetta HTML che contiene uno script client-side in cui
viene utilizzata questa DLL.
- Apriamo il file HTML localmente, nessun errore
- Spostiamo il file HTML su un altro PC in rete e cerchiamo di aprirlo *dal
primo PC*: a te dà errore, giusto?
Raf

 situazione è la seguente:
Finalemnte!!!!! Giustissimo!!!!! Sei un grande, ti ringrazio ;-)
Ciao. 

 ha scritto nel messaggio
news:d42crp$1h3$1...@newsreader.mailgate.org...

Eh, prego... ma era la prima prova che ho fatto, e a me ha funzionato senza
errori.
Pertanto ripeto: hai controllato le impostazioni di protezione in Internet
Explorer?
Vanno impostate in modo da non bloccare l'esecuzione di script e controlli
ActiveX.
Bye

 ActiveX.
Si sono sicuro purtroppo :-(
Quindi a te funziona se la pagina html la sposti su un disco di rete e la 
lanci al *primo pc* ?
A me non funziona :-( 

 errori.
Senti, ti faccio una domanda piu' scentifica, lascia perdere le stupidaggini 
con le quali ti sto facendo perdere tempo.
Quando scrivo una ocx, coem faccio per far si' che IE me la vede come 
sicura?
Grazie 1000 di nuovo

 A me non funziona :-(
L'errore č sempre "ActiveX component can't create object '...'"?
Non sono espertissimo di IE, ma trovo la cosa moto strana perché AFAIK il
browser si carica l'HTML in locale nello stesso modo, indipendentemente se la
pagina si trova sul disco locale o su un drive di rete.
Prova a cambiare lo script facendo creare un oggetto diverso, per vedere se va:
set obj = CreateObject("WScript.Shell")
obj.Popup "Funziona"
Ciao

 ha scritto nel messaggio
news:d42h14$6pa$1...@newsreader.mailgate.org...

Sicuramente qualcuno più esperto di me potrà rispondere a questa domanda.
Sinceramente non mi sono mai imbattuto in questo tipo di problema, però ho idea
che occorra rivolgersi ad un ente certificatore che dovrà rilasciare un
"certificato digitale" del componente che intendi distribuire.
Comunque guarda anche qui:
http://msdn.microsoft.com/workshop/security/authcode/signing.asp
Ciao

 
http://msdn.microsoft.com/workshop/security/authcode/signing.asp
Ok, mi sei stato veramente utile. Per il momento ti ringrazio, quando avro' 
fatto piu' chiarezza se ne avro' bisogno apriro' un nuovo 3d meno caotico 
:-)
Ciao. 

 riesco
Aggiungo un piccolo inciso:
A)
Se č un activex lo devi usare con codebase etc etc
non credi a me ed MSDN ok
http://www.aspencrypt.com/task_client.html
questo qui č un activex per criptare...guarda come si usa
B)
Se la tua dll č un SERVER ActiveX correttamente implementata e installata
allora uno script lato client come questo
<HTML>
<HEAD>
<TITLE>Pagina Prova </TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
dim obj
set obj = CreateObject ("Word.application")
obj.Visible = true
obj.Documents.Open "c:\test\test.doc"
//-->
</SCRIPT>
<BODY >
Eseguo la prova del piffero!.......se č configurato bene il pc ed
IE...dovrebbero saltare fuori mille avvisi di protezione!
</BODY>
</HTML>
Funziona piů o meno...prova ...se hai problemi anche con questo passa  a C)
[Logicamente devi avere office installato e un doc in c:\test]
C)
Esistono una serie di protezioni che non ti fanno fare b)
Norton Firewall ZoneALarm SP2 di XP etc etc etc
Prova a vedere se lo script di sopra di Word va
Se non va č un problema di quel pc!
Se va ..son cazzi amari tuoi!..passa a D)
D)
Se č sempre quel programma che ci siamo detti nell'altro post...io l'ho 
installato!
Prende e mi registra un sw...mi fa una vera e propria installazione con 
tanto di creazione menu!
Quindi ho il sospetto che installa un vero server Activex che usa come 
quello di B)
 di word!
E probabilmente tu non lo stai facendo o implementando correttamente!
Qui Gianluca č piů esperto di me (si sconfina nell'OOP e io son ancora a sub 
e function e ogni tanto mi affaccio su sto mondo )e ti potrebbe consigliare
...su ad esempio persistable non persistable
Multiuse MTS etc etc
Un consiglio:
non abbiamo nessun pregiudizio ma non averne neppure tu!
Se Gianluca ti dice una cosa non č perchč l'ha letta ma perchč l'ha fatta!
c'č una piccola lettera di differenza fra Letta e Fatta...ma č un abisso 
all'atto pratico!
Anche perchč MSDN puň anche essere sbagliato...ma prima di esserlo lui....in 
buona fede...permettici di dubitare del tuo codice!
Saluti!
Wodka40° in trasferta! 

 cut
Aggiungo....visto che qui ...in trasferta...è apparso su un pc
Barra Informazioni di IE
"Per facilitare la protezione è stato impedito a questo file di visualizzare 
contenuto attivo che potrebbe accedere al computer...cliccare per 
informazioni"
Va cliccato su
"Consenti contenuto bloccato...."
mille conferme
ed alla fine appare Word!
incollo una parte dell'help di XPhome
Per impedire il blocco dei download dei file e dei programmi con la Barra 
informazioni
Questa procedura consentirà ai siti Web di inviare automaticamente la 
richiesta di conferma all'utente durante il download dei file e dei 
programmi, escludendo quindi la Barra informazioni.
  1.. Aprire Internet Explorer.
  2.. Scegliere Opzioni Internet dal menu Strumenti.
  3.. Nella scheda Protezione fare clic su Livello personalizzato.
  4.. Eseguire una o entrambe le operazioni seguenti:
    a.. Per disattivare la Barra informazioni per il download dei file, 
nella sezione Download dell'elenco fare clic su Attiva in Richiesta 
automatica download di file.
    b.. Per disattivare la Barra informazioni per i controlli ActiveX, nella 
sezione Controlli e plug-in ActiveX dell'elenco fare clic su Attiva in 
Richiesta di conferma automatica per controlli ActiveX.

 sei in grado di dirmi come risolvere il problema, o sbaglio?
Personalmente vedo l'impiego degli activex sul browser come
la peste. Se tu provassi a far girare una cosa simile sulla
mia rete "ti spezzerei le braccine" (cit.)
In piu`, per quanto riguarda il tuo problema, l'impiego di activex
non firmati e` una lotta contro i mulini a vento, tra permessi
di utente sulla macchina, permessi del browser (internet e intranet),
firewall, late binding e registro con dati sporchi, service pack
e fix vari di browser e/o sistema operativo, livello di encryption
del browser...
Se ci pensi bene, puoi trovare il modo di fare quello che ti serve
senza complicarti la vita con "porcate" (TM) del genere.
Diverso e` il caso di programmi malevoli che vanno a caccia
del pollo cliccatutto che a casa dovrebbe avere molte piu`
voragini aperte che in azienda: li` ti puoi davvero sbizzarrire
(eventuali conseguenze penali a parte).
-- 
ciao, hal