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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager