Newsgroup: it.comp.lang.visual-basic
Titolo: webBrowser ignorante: tasto dx non sempre viene disabilitato

Sto cercando di realizzare un browser in VB con l'oggetto webBrowser.
Fra le altre cose, vorrei disabilitare la pressione del tasto destro del
mouse.
Ho provato creando un oggetto di tipo HTMLDocument con l'istruzione
WithEvents:
Private WithEvents DOC as HTMLDocument
Al verificarsi dell'evento WebBrowser_NavigateComplete2, all'oggetto DOC
viene assegnato il documento aperto dal webBrowser:
Private Sub WebBrowser_NavigateComplete2()
     set DOC = WebBrowser.Document
End Sub
Poiché l'oggetto DOC è stato creato attraverso l'istruzione WithEvents, ora
ho a disposizione tutti gli eventi che si verificano sul documento aperto
dal webBrowser.
Nel mio caso è utile l'evento onContextMenu, che si verifica quando viene
visualizzato il menù contestuale a seguito della pressione del tasto destro
del mouse.
Private Function DOC_oncontextmenu() as Boolean
     DOC_oncontextmenu = False
     msgbox "Tasto destro non abilitato."
End Function
In questo modo è stato disabilitato l'utilizzo del tasto destro del mouse.
Tuttavia il codice funziona solamente se la pagina HTML aperta dal
webBrowser NON è suddivisa in frame.
Infatti, se la pagina è suddivisa in frame, la pagina contenuta dall'oggetto
DOC è la pagina parente, su cui non vengono rilevati gli eventi relativi
alle pagine contenute nei frame in cui è suddivisa la pagina principale
(spero di essere stato chiaro).
Qualcuno di voi conosce una soluzione a questo dilemma?
Vi prego di aiutarmi, sono disperato!!!

 Vi prego di aiutarmi, sono disperato!
non ho provato ma penso che la strada migliore sia il sublclassing (perň non
ho provato)
ti posso dare qualche consiglio se vuoi a qualunque costo usare dhtml:
1) devi creare piů oggetti htmldocument il perchč sta nel fatto che vb non
gestisce eventi con array di object :)
2) una volta effettuato il donload della pagina web (puoi rilevare il fine
download dagli eventi del webbrowser) devi assegnare un oggetto
dhtmldocument per ogni frame.
Tu mi dirai,si ma come ?  se una pagina ha piů frames explorer crea un
contenitore dove puoi trovarli tutti  .. webbrwser.document.frames e tramite
un ciclo for puoi assegnare un reference ad ognuno di loro.
3) finalmente puoi catturare tutti gli eventi.
se vuoi un consiglio perň prima prova il subclassing .Purtroppo non  ho un
esempio  a portata di mano ma sul sito comune ne troverai sicuramente
qualcuno.Puoi adattare qualsiasi esempio di subclassing per gli eventi del
mouse  basta solo cambiare l'hwnd del controllo (dovrebbe bastare come gia
detto non ho provato).
per qualunque altra cosa che non hai capito chiedi pure.
ciao

 gestisce eventi con array di object :)
<CUT>
Dato che re-inventare l'acqua calda non č mai utile, ho cercato di capire
cosa vuoi ottenere e mi balena un dubbio: non vuoi fare vedere il sorgente
delle pagina?
Se si:
    sei sicuro che questo basti? Bene, allora guarda nella dir temporanea di
IE...
Non č possibile proteggere un benemerito nulla di quello che gira sul WEB...
ciao
Dads.
P.S.: ci sono sistemi migliori rispetto l'uso del controllo WebBrowser,
prova a guardare XMLHTTP sulla libreria MSXML.

 Dads.
 perchè scusa un file dalla dir temporanea non si puo cancellare?
da quando ?
ciao :)

 se vuoi un consiglio però prima prova il subclassing .Purtroppo non  ho un


 precedenza?
ogni oggetto doc è dichiarato con la withevents ,non potendo usare array
,avrai una sub di gestione evento per ogni oggetto(htmldocument).Dentro
questa sub potrai gestire il codice come vuoi magari richiamando una
funzione comune.Non devi per forza mettere lo stesso codice in tutti gli
eventi :))
Capisco che ci vorrebbe un esempio ma purtroppo ,per il momento ,non ho più
vb e non posso mandarti il codice.
ciao

 Capisco che ci vorrebbe un esempio ma purtroppo ,per il momento ,non ho
piů


 che non posso creare un array di oggetti, giusto?
ah ho capito.Guarda che di solito non sono più di 6 o 7 frame perciò diciamo
che 10 ref potrebbero essere più che sufficienti.Ti faccio un piccolo
esempio a memoria....
dim withevents dochtml1 as ihtmldocument
dim withevents dochtml2 as ihtmldocument
dim withevents dochtml3 as ihtmldocument
dim withevents dochtml4 as ihtmldocument
dim withevents dochtml5 as ihtmldocument
dim withevents dochtml6 as ihtmldocument
 ....
per ogni dochtml* avrai una sub associata all'evento che vuoi
sub  eventochevuoidochtml ()
 funzionegestione
end sub
sub  eventochevuoidochtm2 ()
 funzionegestione
end sub
sub  eventochevuoidochtm3 ()
 funzionegestione
end sub
.....
nell'evento di fine download che potrebbe essere downloadcomplete(non
ricordo quale sia il migliore ce ne sono diversi) associ i ref:
sub  downloadcomplete()
 set  dochtm*=document.frames(*)  ' devi usare  un ciclo for per associare
tutti i ref questo è solo un esempio :))
end sub
chiaramente dovrai gestire anche gli errori perchè non tutte le pagine hanno
frame.
Spero di essere stato un pochino più chiaro putroppo non ho più vb questo è
il massimo che ricordo.
ciao :)

 ha scritto nel messaggio
news:l1mz7.40074$1H1.4...@news.infostrada.it...


Forse ho esultato troppo presto: mi si è creato un nuovo intoppo.
Supponiamo che una pagina sia inizialmente suddivisa principalmente in due
frames. Supponiamo che questi due frames siano a loro volta suddivisi in
altri due frames. Abbiamo 4 frames.
Il problema è che l'istruzione webBrowser.document.frames.length rileva solo
2 frames (quelli che compongono la pagina principale). Sarebbe quindi
neccessario rilevare anche le ulteriori suddivisioni dei frames. Hai in
mente qualcosa?
Confido in te!



 wrote in message
news:9qjmfv$f3f$1...@lacerta.tiscalinet.it...


 altri due frames. Abbiamo 4 frames.
devi mettere una routine di controllo dell'esistenza di frames nella pagina
:))
mi dirai ma coem faccio ?
credo che l'unico modo sia quellla del controllo dell'errore
dim a
on error goto errr:
all'interno dei vari cicli for di controllo dei frames
a=-1
a= document.frames(0).frames.count 'se non esiste l'oggetto frames viene
generato un errore
if a=-1 then frame non esiste
errr:
resume next
questo è solo un possibile esempio .Non puoi controllore con "if
document.frames(0).frames is nothing then...."   in quanto l'oggetto
potrebbe non esistere e ci sarebbe comunque  un errore.
ciao