Ho un form con dentro un oggetto WebBrowser. Ho una routine che, ciclicamente, naviga per Internet con il WebBrowser prendendo i link e aprendoli, se soddisfano certi requisiti.
Succede che durante questa navigazione automatica saltano fuori alcune FINESTRE di errore, ad esempio: "errore nello script", "errore nell'esecuzione della pagina", eccetera eccetera.
quando saltano fuori questa finestrelle, il programma rimane in attesa che l'utente clicchi su queste finestre per chiuderle.
Questo non va affatto bene perchè la ricerca dura alcune ore e non posso avere questi blocchi.
così ho fatto questo codice di seguito codice per prendere tutti i processi e chiudere quelli che mi rompono le scatole. Ecco il codice:
codice:
 Public Sub ChiudiFinestrelle()
        'Con questa procedura chiudo le varie finestrelle che si aprono durante l'esplorazione, come per 
        'esempio gli avvisi protezioni, gli errori di script, eccetera.
        Dim ProcessiAttivi As Process()
        Dim myProcess As Process
        ProcessiAttivi = Process.GetProcesses()   'prendo tutti i processi attivi
        For Each myProcess In ProcessiAttivi
            If InStr(1, LCase(myProcess.MainWindowTitle), "avviso di protezione", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "errore nello script", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "download del file", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "windows internet explorer", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "connetti a", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "windows media player", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "errore pagina web", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "ambiente di sviluppo", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "messaggio dalla pagina", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
            If InStr(1, LCase(myProcess.MainWindowTitle), "prompt utente explorer", vbTextCompare) > 0 Then myProcess.CloseMainWindow()
        Next myProcess
    End Sub
qual'è il problema? il problema è che non trova mai nessun processo con quei titoli di finestra e quindi non chiude un tubo.
trova solo i processi che si vedono nel task manager di windows ma in tale lista non compaiono quelle FINESTRE "errore nello script", "avviso di protezione" e altre simili.

Con il vb6 avevo un codice che mi pigliava veramente TUTTI i processi e riusciva a beccare e chiudere quelle finestre sgradite. Però non posso usarlo perché ci sono una trentina di Api che ho provato a riadattare in vb.net ma non ci sono riuscito.

ho visto, nel debug, che ogni processo ha la proprietà "modules", la quale contiene un vettore con svariati moduli (dll). E' qui che devo spulciare per vedere se trovo quelle finestre di errore??
E come faccio a chiudere solo un modulo e non tutto il processo?
AIUTO!