Newsgroup: it.comp.lang.visual-basic
Titolo: Avviso protezione di WebBrowser

Salve a tutto il NG
ho scritto un'applicazione che fa uso del componente WebBrowser, e faccio un 
accesso ad una pagina che richiede login e pw. L'applicazione funziona come 
voglio io, ma quando fa l'accesso mi compare la finestra di 'Avviso 
protezione'.Come devo fare per eliminarla e fa procedere l'applicazione 
facendo cliccare in automatico su OK dell'invio dei dati?
Ringrazio tutti per le risposte 

 facendo cliccare in automatico su OK dell'invio dei dati?
Quello che adopero io con autoit3 (freee e redistribuibile)
http://www.autoitscript.com/autoit3/files/beta/autoit/
puoi farlo anche tu  o prendere lo spunto e fare lo stesso in VB :
http://www.filegone.com/m3xj
tutto completo qui sopra :
(il ControlClick agisce anche su una finestra nascosta o minimizzata)
Sleep(1500)
;_IEClickImg($oIE, "Ok", "name", 0, 1)
_IEFormSubmit($oForm)
Sleep(3000)
 AutoItSetOption("WinTitleMatchMode", 4)
  WinWaitActive( "Avviso di protezione", "", 10 )
  ControlFocus ( "Avviso di protezione","" , "Button1" )
  ControlClick ("Avviso di protezione","","Button1")
sleep(1000)
esempio generico di login : (sempre autoit3)
http://www.filegone.com/h1s2
serve IE.au3  con   #include <IE.au3>
http://www.autoitscript.com/forum/index.php?showtopic=13398
--
Fosco

 
http://www.filegone.com/m3xj
Cancellato perche mi ero dimenticato dei dati personali
rimesso qui 
http://www.filegone.com/84l0
--
Fosco

"Fosco" <fa...@fake.invalid> ha scritto nel messaggio 
news:pkh1g.17781$6e2....@news.edisontel.com...

Ti ringrazio infinitamente per l'aiuto...
ma non č che mi potresti dire meglio come inserire il tutto nel mio 
programma?
non sono molto pratico di javascript..
Grazie ancora 

 non sono molto pratico di javascript..
Non e' javascript ... quello che ti ho messo in upload
se lo provi fa' gia tutto da solo .. basta che cambi user e pass e metti
il tuo sito
Scolta adesso NON ho neppure Visual Basic qui ...
tento di rabberciarti qualcosa a "spanna" senza la possibilita' di testarlo
questo sotto lo puoi poi implementare nella tua applicazione
per testarlo prova ad aprire la tua pagina e a lanciarlo
l'avviso di protezione dovrebbe chiuderlo .. ho messo delle pause
ed AppActivate cosi puoi vedere
copia tutto cosi su un form e lancialo ed apri la tu pagina web metti
user e pass ed aspetti che arrivi l'avviso .. dovrebbe chiudersi da solo :
Private Declare Function FindWindowEx Lib "user32" Alias _
"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long
Private Declare Function PostMessage Lib "user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Sub Form_Load()
Dim isRunning As Boolean
isRunning = CBool(FindWindow(vbNullString, "Avviso di protezione"))
'If isRunning = True Then MsgBox "YES"
While isRunning = False
Pause (1)
isRunning = CBool(FindWindow(vbNullString, "Avviso di protezione"))
'MsgBox "bingo"
Wend
AppActivate ("Avviso di protezione")
Pause (1)
'MsgBox "ATTIVO"
Handle = FindWindow("#32770", "Avviso di protezione")
               AppActivate "Avviso di protezione"
               'SendKeys "~"
               'BM_CLICK &HF5 = Buttom mouse click???
        Handle = FindWindowEx(Handle, 0, "Button", "&Sě")
   Send = PostMessage(Handle, &HF5, 0, NullString)
   Unload Me
End Sub
Private Sub Pause(sec As Single)
    Dim t As Single
    t = Timer
    While Timer <= t + sec
        DoEvents
    Wend
End Sub
--
Fosco

 > programma?
Oppure se non funziona o non ci riesci dammi la pagina
che ti faccio una cosa io
--
Fosco


Ti ringrazio ancora infinitamente per il tuo aiuto
Ho inserito tale codice nel mio progetto, ma in fase di esecuzione mi dice 
che 'Handle' non č definito e non so sinceramente che tipo 
associarci...credo sia lo stesso anche per 'Send' una volta risolto per 
'Handle'
Grazie ancora !!! 

 'Handle'
Taglia un po di roba quando rispondi
http://digilander.iol.it/ifst/html/Quoting.html
lo hai provato cosi come te l'ho messo io ?  funziona ?
NON funziona solo quano lo metti nel tuo progetto ?
probabilmate nel tuo progetto hai Option explicit  dichiarato
o lo togli
(meglio cioe' non lo sarebbe .. ma  io NON ho VB sottomano  e non posso testare)
o devi  dichiarare :  (vado sempre a spanna prova tu un po')
Private Sub Form_Load()
Dim isRunning As Boolean
Dim handle As Long
Dim send As Long
ecc
e cambi
send = PostMessage(handle, &HF5, 0, NullString)
in
send = PostMessage(handle, &HF5, 0, vbNullString)
ecc
--
Fosco

 send = PostMessage(handle, &HF5, 0, vbNullString)
Ho fatto le modifiche che mi hai suggerito, il progetto compila ma cmq viene 
visualizzata la finestra di Protezione :-( 

 visualizzata la finestra di Protezione :-(
ascolta io ti ho fatto delle domande e tu NON hai risposto
il primo che ti ho dato l'hai provato cosi come era ... NON inserito
nel tuo progetto ? funzionava ?  non funziona solo quando lo
esporti nel tuo progetto ?
la risposta a queste domande darebbe gia' un punto di partenza
scolta sono andato su xp su qui ho VB e questo sotto STAND ALONE
che significa che lo devi copiare PARO PARO su un form vergine
funziona .. prova lo stesso anche tu lanciandolo aprendo la pagina web
e aspetta che arrivi l'avviso di protezione .. se funziona lo importi con
i dovuti accorgimenti nel tuo progetto :
Private Declare Function FindWindowEx Lib "user32" Alias _
"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long
Private Declare Function PostMessage Lib "user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function Putfocus Lib "user32" Alias _
"SetFocus" (ByVal hwnd As Long) As Long
Option Explicit
Private Sub Form_Load()
Dim isRunning As Boolean
Dim Handle As Long
Dim send As Long
Handle = FindWindow("#32770", "Avviso di protezione")
'Handle = FindWindow("Notepad", "Senza nome - Blocco note")
'MsgBox Handle
While Handle = 0
Pause 1
'Handle = FindWindow("Notepad", "Senza nome - Blocco note")
Handle = FindWindow("#32770", "Avviso di protezione")
 Wend
              ' AppActivate "Avviso di protezione"
              Putfocus Handle
               Pause 1
'       AppActivate "Senza nome - Blocco note"
       Pause 1
             '  MsgBox "fatto"
              ' SendKeys "!f"
               'BM_CLICK &HF5 = Buttom mouse click???
        Handle = FindWindowEx(Handle, 0, "Button", "&Sě")
   send = PostMessage(Handle, &HF5, 0, vbNullString)


 esporti nel tuo progetto ?
Ho provato come mi hai suggerito, mettere il tuo codice in un progetto a 
parte e funziona perfettamente.
Ora sto provando a inserirlo nel mio progetto
Ho provato a inserire ora il codice nel mio progetto ma non va :-(
L'ho inserito sia nel Form_load che poco prima di dove compare l'avviso di 
protezione...ma niente :-( 

>>>> "&Sì"    e NON altro  cioe'  NON  &Si  o Si  o  si  ecc
come qui visto  anche  le  ì  í  î    di  "&Sì"  potrebbero fare la differenza
'test notepad >>>> tutto su un form lancialo ed apri notepad
Private Declare Function FindWindowEx Lib "user32" Alias _
"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long
Private Declare Function PostMessage Lib "user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function Putfocus Lib "user32" Alias _
"SetFocus" (ByVal hwnd As Long) As Long
Option Explicit
Private Sub Form_Load()
Dim Handle As Long
'Handle = FindWindow("#32770", "Avviso di protezione")
Handle = FindWindow("Notepad", "Senza nome - Blocco note")
MsgBox Handle
While Handle = 0
Pause 1
Handle = FindWindow("Notepad", "Senza nome - Blocco note")
'Handle = FindWindow("#32770", "Avviso di protezione")
 Wend
              ' AppActivate "Avviso di protezione"
              Putfocus Handle
               Pause 1
       AppActivate "Senza nome - Blocco note"
Msgbox handle
       Pause 1
             '
               'BM_CLICK &HF5 = Buttom mouse click???
        Handle = FindWindowEx(Handle, 0, "Button", "&Sì")
Msgbox handle
    PostMessage Handle, &HF5, 0, vbNullString
DoEvents
   Unload Me
End Sub
Private Sub Pause(sec As Single)
    Dim t As Single
    t = Timer
    While Timer <= t + sec
        DoEvents
    Wend
End Sub
'RiPs:
'come gia detto se mi posti la pagina web e mi dici cosa vuoi fare
'ti faccio tutto io in un linguaggio che mi e' piu congeniale
(l'user e pass te le lascio in bianco e puoi inserirle tu)
io ti faccio navigare alla pagina individuo i campi user e pass
te li faccio inserire (anche automaticamente volendo)
e SOPPRIMO l'avviso di protezione
... s'avrebbe gia' fatto dal primo post se mi rispondevi :-)
--
Fosco

 protezione...ma niente :-(
Il post precedente l'avevo scritto ed inviato Off line e non
avevo visto ancora questo ... assodato che funziona adesso
lo devi inserire bene nel tuo progetto ...
come detto non dovrebbe essere difficile  .. diciamo che di tuo navighi
alla pagina inserisci user e pass .. qui scatta l'avviso .. ci metti le cose
che ho postato io .. e poi continui con le tue operazioni
http://www.google.it/search?hl=it&q=vb6+for+beginners&meta=
--
Fosco

 che ho postato io .. e poi continui con le tue operazioni
Ho provato quanto mi hai suggerito, però ho notato che il problema è che 
l'Avviso di protezione è bloccante, quindi se faccio eseguire il tuo codice 
prima che compare, il programma cicla sempre tra
   While Handle = 0
    Pause 1
    'Handle = FindWindow("Notepad", "Senza nome - Blocco note")
    Handle = FindWindow("#32770", "Avviso di protezione")
     Wend
in quanto non trova nessun Avviso di protezione. Al contrario, se lo metto 
dopo il punto che mi fa comparire l'Avviso di protezione, il tuo codice non 
viene eseguito (e cmq ciclerà come sopra), in quanto l'esecuzione del 
programma si blocca finchè non viene premuto manualmente il tasto SI.
Penso che l'unica cosa da fare è far eseguire in stand alone l'exe di quanto 
mi hai postato tu, infatti ho scritto in questo modo e funziona bene
    Dim WshShell As Object
    Dim ObjExec As Object
    Set WshShell = CreateObject("WScript.Shell")
    Set ObjExec = WshShell.Exec("closeProt.exe")
C'è un modo per non far comparire proprio la schermata di Avviso protezione?
Grazie infinite 

 C'è un modo per non far comparire proprio la schermata di Avviso protezione?
Non lo so' forse dipende dalle impostazioni del browser (IE  ???) o della
pagina stessa
PS:
non mi ricordo piu come ho fatto closeProt.exe  ma se funziona come
dici tu e NON devi distribuire l'applicazione ma lo usi solo personalmente
io non mi farei troppi problemi  ... per ulteriore studio e test ecco un ulteriore
vbs (WSH)  ... lo puoi usare come file *.vbs  o usarlo in vb come hai usato quello sopra
una volta richiamato restera' attivo finche non comparira' una finestra
(windows/mesagebox) con la caption ("Avviso di protezione") :
Set WshShell = CreateObject("WScript.Shell")
Do Until WshShell.AppActivate("Avviso di protezione")
  wscript.sleep 200
Loop
WshShell.AppActivate("Avviso di protezione")
  wscript.sleep 1000
WshShell.AppActivate("Avviso di protezione")
WshShell.SendKeys"{enter}"
If Not WshShell.AppActivate("Avviso di protezione") Then
wscript.quit
Else
 wscript.sleep 1000
 WshShell.AppActivate("Avviso di protezione")
WshShell.SendKeys"{enter}"
End if
'Copia incolla su notepad e salva con estensione .vbs
'tutti i file (*.*)  poi ci clicchi sopra. (per esempio Test.vbs)
'se ti da' errore disattiva l'antivirus
--
Fosco

 C'è un modo per non far comparire proprio la schermata di Avviso protezione?
E' questo l'avviso che ti appare ?
http://www.filegone.com/9voz
come vedi appare anche a me e come puoi vedere sotto io il 
www.190.it
l'ho messo tra i siti affidabili in Internet Explorer
Puoi provare a fare lo stesso anche tu  apri IE strumenti opzioni
internet >> protezione siti affidabile  .. mettici il tuo e prova
Se dovesse ancora apparire l'avviso metti tra i siti affidabili anche
la pagina risultatnte dopo che hai cliccato SI sull'avviso stesso
news:microsoft.public.it.internet_explorer
--
Fosco

 io non mi farei troppi problemi
A me interssava avere tutto in un solo file .exe quando compilavo, se cmq 
devo creare un altro file .vbs, a questo punto lascio l'esecuzione dell'exe 
closeProt.exe 

 la pagina risultatnte dopo che hai cliccato SI sull'avviso stesso
Fatto, ma mi da un altro avviso, che mi dice che sto visualizzando un sito 
che si trova nella sezione dei siti affidabili 

 che si trova nella sezione dei siti affidabili
LOL ..  da ridere se non fosse tragico (per te')
ho capito tutto in un exe vuoi ... quello che avevo postato io
con Handle = FindWindow  ecc lo avrebbe fatto
NON e' il massimo dall'eleganza ma hai provato a mettere direttamente
questo al posto del richiamo all exe esterno ?
dovrebbe funzionare :
Provalo PRIMA  in un form VB VERGINE  cio' NON nella tua applicazione
copia incolla cosi come' e' in un form  lancialo  apri la tua pagina
web mettici user e pass  e aspetta l'avviso ... se funziona lo provi
nella tua applicazione  .... la Private Declare  all' inizio insieme alle
altre il resto nel punto giusto nella sub che adoperi :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Dim WshShell As Object
    Dim ObjExec As Object
Set WshShell = CreateObject("WScript.Shell")
Do Until WshShell.AppActivate("Avviso di protezione")
  Sleep (200)
Loop
WshShell.AppActivate ("Avviso di protezione")
  Sleep (1000)
WshShell.AppActivate ("Avviso di protezione")
WshShell.SendKeys "{enter}"
If Not WshShell.AppActivate("Avviso di protezione") Then
wscript.quit
Else
 Sleep (1000)
 WshShell.AppActivate ("Avviso di protezione")
WshShell.SendKeys "{enter}"
End If
End Sub
--
Fosco

     Dim ObjExec As Object
Dim ObjExec As Object
e' di troppo  ma la puoi anche lasciare .. tanto ... male non fare
--
Fosco

 wscript.quit
facendo come suggeritomi mi chiude la finestra di avviso di protezione, ma 
mi da errore su wscript.quit
l'errore č:
Errore di run-time'424':
Necessario oggetto

 Necessario oggetto
Scusa per questo sotto .. ma mi viene spontaneo :
Quel ca**o  di Option Explicit all'inizio  NON ti conviene TOGLIERLO
visto che NON lo sai gestire e ti crea piu problemi che altro ?
o quello o togli la riga wscript.quit
Ma dico ... anche un po' di INIZIATIVA e magari provare a dichiarare :
Dim WshShell As Object
    Dim wscript As Object
comunque IMHO visto che ti crea questi problemi togli Option Explicit
--
Fosco