Bouttons indisponibles suite au lancement du proxy FiddlerCore
Bonjour,
je suis en train de développer un petit contrôle parental qui à pour but d'analyser le texte des pages web que l'utilisateur visite afin d'y détecter des mots interdits. J'ai mis des semaines avant d'arriver à faire fonctionner le proxy (issu de l'API FiddlerCore), analyser, corriger les bugs ... J'ai fini par y arriver. Cependant à quelque jours de lancer la version bêta de mon programme, je me rends compte (je ne sais pas comment c'est arrivé) qu'il y a un gros soucis, c'est que lorsque je lance le proxy Fiddler, les boutons de mon formulaire ne sont plus accessibles ! le programme répond bien mais plus aucun bouton ne marche.
Selon le créateur de Fiddler que j'ai contacté sur le forum officiel, j'utiliserais un événement ou autre qui bloque les "UI thread".
Voilà je ne comprends vraiment pas d'où ça peut venir car si j'essaye de créer mon programme avec juste la fonction d'analyse des pages, tout marche nickel.
Afin de maximiser les chances pour résoudre mon problème, je vous donne les liens du même sujet que j'ai crée sur le support Fiddler.
Merci d'avance pour votre aide !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| Public Delegate Sub AsyncMethodCaller(sText As String)
Private Sub ShutdownFiddlerApp()
FiddlerApplication.Shutdown()
MsgBox("Unloaded proxy")
Threading.Thread.Sleep(1000)
End Sub
Private Sub FiddlerBeforeRequestHandler(ByVal tSession As Session)
RichTextBox1.BeginInvoke(New AsyncMethodCaller(AddressOf AddText), tSession.fullUrl)
End Sub
Private Sub FiddlerBeforeResponseHandler(ByVal tSession As Session)
End Sub
Public Sub VerificationPage()
Try
Dim webClient As New System.Net.WebClient
Dim result As String = webClient.DownloadString(url)
Dim client As WebClient = New WebClient()
Dim data As Stream = client.OpenRead(url)
Dim reader As StreamReader = New StreamReader(data)
Dim Page As String = reader.ReadToEnd
ListeMots.AddRange(IO.File.ReadAllLines("C:\Users\" & System.Environment.UserName & "\Documents\ListeDeMots.txt"))
Dim found As Boolean = False
For Each s As String In ListeMots
If Page.ToLower.Contains(" " & s.ToLower & " ") = True Or Page.ToLower.Contains("<h1>" & s.ToLower & "</h1>") = True Then
Dim myProcesses As Process() = Process.GetProcessesByName("firefox")
Dim myProcess As Process
For Each myProcess In myProcesses
myProcess.Kill()
Next myProcess
Dim myProcesses2 As Process() = Process.GetProcessesByName("iexplore")
Dim myProcess2 As Process
For Each myProcess2 In myProcesses2
myProcess2.Kill()
Next myProcess2
Dim myProcesses3 As Process() = Process.GetProcessesByName("chrome")
Dim myProcess3 As Process
For Each myProcess3 In myProcesses3
myProcess3.Kill()
Next myProcess3
Dim myProcesses4 As Process() = Process.GetProcessesByName("opera")
Dim myProcess4 As Process
For Each myProcess4 In myProcesses4
myProcess4.Kill()
Next myProcess4
RichTextBox1.Clear()
MsgBox("Un mot interdit a été détecté :" & s)
End If
Next
Catch
End Try
End Sub
Public Sub VerificationURL()
Try
Dim found As Boolean = False
For Each s As String In ListeMots
If url.ToLower.Contains("-" & s.ToLower & "-") = True Or url.ToLower.Contains("." & s.ToLower & ".") = True Or url.ToLower.Contains("." & s.ToLower & "-") = True Or url.ToLower.Contains("-" & s.ToLower & ".") = True Then
Dim myProcesses As Process() = Process.GetProcessesByName("firefox")
Dim myProcess As Process
For Each myProcess In myProcesses
myProcess.Kill()
Next myProcess
Dim myProcesses2 As Process() = Process.GetProcessesByName("iexplore")
Dim myProcess2 As Process
For Each myProcess2 In myProcesses2
myProcess2.Kill()
Next myProcess2
Dim myProcesses3 As Process() = Process.GetProcessesByName("chrome")
Dim myProcess3 As Process
For Each myProcess3 In myProcesses3
myProcess3.Kill()
Next myProcess3
Dim myProcesses4 As Process() = Process.GetProcessesByName("opera")
Dim myProcess4 As Process
For Each myProcess4 In myProcesses4
myProcess4.Kill()
Next myProcess4
RichTextBox1.Clear()
MsgBox("Un mot interdit a été détecté dans un lien :" & s)
End If
Next
Catch
End Try
End Sub
Private Sub AddText(sText As String)
RichTextBox1.SelectAll()
Dim nbrligne As Integer = RichTextBox1.GetLineFromCharIndex(RichTextBox1.SelectionLength())
If nbrligne > 40 Then
RichTextBox1.Clear()
End If
Dim url2 As Uri
url2 = New Uri(sText)
If url2.AbsolutePath.EndsWith(".js") = False And url2.AbsolutePath.EndsWith(".jpg") = False And url2.AbsolutePath.EndsWith(".gif") = False And url2.AbsolutePath.EndsWith(".png") = False And url2.AbsolutePath.EndsWith(".css") = False And url2.AbsolutePath.EndsWith(".ico") = False And url2.AbsolutePath.EndsWith(".jpeg") = False And RichTextBox1.Text.Contains(sText) = False And url2.ToString.Length < 200 = True Then
RichTextBox1.AppendText(sText & vbCrLf)
url = sText
Dim ThreadVerificationPage As New Threading.Thread(AddressOf VerificationPage)
ThreadVerificationPage.Start()
Dim ThreadVerificationURL As New Threading.Thread(AddressOf VerificationURL)
ThreadVerificationURL.Start()
End If
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
AddHandler FiddlerApplication.BeforeResponse, AddressOf FiddlerBeforeResponseHandler
AddHandler FiddlerApplication.BeforeRequest, AddressOf FiddlerBeforeRequestHandler
AddHandler Application.ApplicationExit, AddressOf ShutdownFiddlerApp
Dim oFlags As FiddlerCoreStartupFlags = FiddlerCoreStartupFlags.Default
FiddlerApplication.Startup(0, oFlags)
MsgBox("Started proxy on port " & FiddlerApplication.oProxy.ListenPort)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
ShutdownFiddlerApp()
End Sub |