bonsoir
comment savoir si une page internet est totalement affichée
bonsoir
comment savoir si une page internet est totalement affichée
Bonjour,
En vérifiant l'état de la propriété readystate ou les évènements du navigateurs dans le cas d'une utilisation asynchrone
voici mon code:
mon problème est que si je n'ai pas de page internet explorer d'ouverte lorsque le prog est lancé les pages s'écrase les unes les autres et il ne me reste que la dernière page. si IE est lancé là pas de pb les pages s'affichent dans différents onglets. c'est pour celà que je voulais vérifier que la première page était affichée avant de lancer la suite. Vous pouvez remarquer que j'ai mis une pose (ici en commentaire car pas déclaré dans le bout d'essai) entre les deux premières pages pour résoudre mon pb , mais je ne trouve pas ça très catholique ou ortodoxe .
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 Option Explicit Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Private Sub OuvreUrl(ByVal sFile As String, Optional ByVal sParameters As String = vbNullString) ShellExecute 0&, "open", sFile, sParameters, vbNullString, 1& End Sub Public Sub AfficheUrl(Mot As String) OuvreUrl ("http://www.mediadico.com/dictionnaire/definition/" & Mot & "/1") 'Sleep (2000) OuvreUrl "http://francois.gannaz.free.fr/Littre/xmlittre.php?rand=&requete=" & Mot OuvreUrl "http://free.mediadico.com/dictionnaire.asp/definition/" & Mot & "/dictionnaire" OuvreUrl "http://www.cnrtl.fr/lexicographie/" & Mot OuvreUrl "http://dictionnaire.tv5.org/dictionnaires.asp?Action=1&mot=" & Mot & "&che=1" OuvreUrl "http://fr.wiktionary.org/wiki/" & LCase(Mot) End Sub
la propriété readystate de quoi?En vérifiant l'état de la propriété readystate ou les évènements du navigateurs dans le cas d'une utilisation asynchrone
et les événements du navigateur comment je peux les récupérer
je ne sais pas si je suis assynchrone
Une solution parmi d'autres.
sur un Form, un TextBox, un CommandButton et un LabelDans un module .bas
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 Option Explicit Private Sub Form_Load() Text1.Move 255, 150, 1350, 315 Text1.Text = "parabole" Command1.Move 240, 600, 1395, 285 Command1.Caption = "Rechercher" Label1.Move 240, 945, 1410, 300 Label1 = "" Me.Height = 1980: Me.Width = 2295 End Sub Private Sub Command1_Click() Dim MoT As String MoT = Trim(Text1.Text) Label1 = "" SetTimer Me.hwnd, 0, 500, AddressOf TimerProc ' on crée un timer DoEvents OuvreUrl ("http://www.mediadico.com/dictionnaire/definition/" & MoT & "/1") 'Sleep (2000) Do While LabTitre <> "Ouverte" DoEvents Loop OuvreUrl "http://francois.gannaz.free.fr/Littre/xmlittre.php?rand=&requete=" & MoT OuvreUrl "http://free.mediadico.com/dictionnaire.asp/definition/" & MoT & "/dictionnaire" OuvreUrl "http://www.cnrtl.fr/lexicographie/" & MoT OuvreUrl "http://dictionnaire.tv5.org/dictionnaires.asp?Action=1&mot=" & MoT & "&che=1" OuvreUrl "http://fr.wiktionary.org/wiki/" & LCase(MoT) DoEvents Label1 = "Arret" End Sub Private Sub OuvreUrl(ByVal sFile As String, Optional ByVal sParameters As String = vbNullString) ShellExecute 0&, "open", sFile, sParameters, vbNullString, 1& End Sub Private Sub Label1_Change() If Label1 = "Arret" Then KillTimer Me.hwnd, 0 ' suppression du timer créé End If End SubDans Projet1 - Propriétés du projet => Objet de démarrage : Sub Main
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 Option Explicit Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Public Declare Function SetTimer Lib "User32" ( _ ByVal hwnd As Long, ByVal nIDEvent As Long, _ ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Public Declare Function KillTimer Lib "User32" ( _ ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Public Declare Function EnumWindows Lib "User32" ( _ ByVal wndenmprc As Long, ByVal lParam As Long) As Long Public Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hwnd As Long, _ ByVal lpString As String, _ ByVal cch As Long) As Long Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) EnumWindows AddressOf EnumCallback, 0 End Sub Public Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long Dim buf As String * 256 Dim Titre As String Dim Longueur As Long 'Récupère le titre de la fenêtre Longueur = GetWindowText(app_hWnd, buf, Len(buf)) Titre = Left$(buf, Longueur) If Trim(Titre) <> "" Then 'Vérifie si le titre de la fenêtre correspond au nom recherché If InStr(Titre, "MEDIADICO") <> 0 Then Form1.Label1 = "Ouverte" DoEvents End If End If EnumCallback = 1 'Poursuit l'énumération End Function Public Sub Main() Form1.Show End Sub
Chez moi cela fonctionne .
Reste a gérer:
- la sortie de boucle DO .... Loop au cas ou l'URL n'est pas disponible (tres tres important)
- la fermeture des URLs lors des sequences suivantes
Si tu adoptes cette façon de faire et si tu as des difficultés de gestion des 2 points sités, je te proposerai une solution.
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
bonjour
merci "progelect"pour cette réponse ça fonctionne très bien!!!!
mais si tu pouvais détailler comment les différentes api utimlisées fonctionne ça serait très sympa!
j'ai essayé de suivre pas à pas comment ça fonctionne mais je butte sur toutes les explications en anglais des Api. si j'ai bien compris il ya un timer qui lance régulièrement la recherche des fenêtres ouvertes et si on trouve la fenêtre qui a le bon titre c'est qu'elle est ouverte?
Donc peut on considérer qu'une fois le titre changé , la page est considéré comme ouverte?
merci j'ai fini par comprendre le fonctionnement et j'ai créé un autre post pourtenter d'avoir plus de précision sur settimer
merci encore
bonsoir
j'ai suivi les liens donnant des explications sur settimer et proctimer :
http://msdn.microsoft.com/en-us/library/ms644906.aspx
http://msdn.microsoft.com/en-us/libr...07(VS.85).aspx
et là étonnement sur la déclaration de la fonction timerproc qui n'a pas l'air de correspondre à ce que tu as fait et qui marche!!!!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager