La documentation des fonctions des bibliothèques de Windows se trouve sur MSDN …
La documentation des fonctions des bibliothèques de Windows se trouve sur MSDN …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Marc une fois n'est pas coutume je te propose une autre alternative
reprenons le principe des sendkeys
je te propose donc de regarder cette version utilisant l'api keyb_event pour taper les touche
pourquoi je te la propose
pour 2 raisons
le soucis avec sendkeys c'est que cela peut taper n'importee ou !!! si la fenêtre n'est pas bien activée
la 2d raison et la un peu plus importante
tu dis que le sleep 100 après détection du bandeau est obligatoire et que sans doute il se passe quelque chose dans IE qui fait que le bouton n'est pas dispo ( phénomène visible sur Firefox)
et bien visiblement l'api capte plus vite car chez moi je peut presque supprimer le sleep ( tu n'a qu'a faire des essais)
pourquoi?
et bien dans les ligne de frappe de touche le 2d argument concerne la fenêtre active (chose que l'on ne métrise pas avec sendkey)
voila le code complet a tester comme tel
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 Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 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 Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Dim IE As Object, TTVE As Long, mode%, T! Sub Demo2keyapi() Const ELT = "ctl00_BodyABC_Button1" Dim Wb As Workbook, mess As String T = Timer For Each Wb In Workbooks If Wb.Name Like "Cotations*.csv" Then Wb.Close False Next Set IE = CreateObject("InternetExplorer.Application") With IE .Navigate "http://www.abcbourse.com/download/historiques.aspx" 'Visible = True 'facultatif!!!!!!! While .ReadyState < 3 mess = "IE n'etait pas ready !!!" If Timer - T > 9 Then GoTo Fin Wend While Not IsObject(.Document.all(ELT)) mess = "l'object " & ELT & " n'a pas été trouvé " If Timer - T > 9 Then GoTo Fin Wend On Error GoTo Fin With .Document.all mess = "les elements n'ont pas pu etre mis a jours" .ctl00_BodyABC_strDateDeb.Value = "26/05/2015" .ctl00_BodyABC_strDateFin.Value = "26/05/2016" .ctl00_BodyABC_oneSico.Click .ctl00_BodyABC_txtOneSico.Value = "FR0000120222" .ctl00_BodyABC_dlFormat.Value = "x" .Item(ELT).Click End With ' .Visible = True mess = "relax ca va trop vite!!" Bandeau 1 'ou si on est dans un object anonyme "bandeau .document.parent" 'bandeau .document.parentWindow.Object End With Exit Sub Fin: MsgBox mess, vbCritical IE.Quit End Sub Sub Bandeau(Optional opt% = 1) Dim r As RECT, HIEFRAME As Long, i As Long, hwndIEedge As Long IE.Visible = True mode = opt HIEFRAME = IE.hwnd 'FindWindow("IEFrame", vbNullString) IE.Visible = True: Do 'recherche du handle bandeau DoEvents: i = i + 1 hwndIEedge = FindWindowEx(HIEFRAME, 0&, "Frame Notification Bar", vbNullString) 'recherche du handle de la fenetre de telechargement IE edge Loop While hwndIEedge = 0 Or i = 20000 ShowWindow hwndIEedge, 5 ' on active le badeau et le met au premier plan Sleep 1000 ' le sleep obligatoire chez moi sleep 100 suffit !!!! 'principe: ' action sur la touche , code ascii de la touche , 0=la fenetre active , le sens: 0=appuyé ou &h2=lacher , 0 tout le temps) ' l'avantage de cette methode par raport a sendkeys c'est que l'on est sur de taper sur la bonne fenetre avec le 2d argument(0=fenetre active) keybd_event 9, 0, 0, 0 keybd_event 9, 0, &H2, 0 If opt = 2 Then keybd_event 9, 0, 0, 0 keybd_event 9, 0, &H2, 0 End If keybd_event 13, 0, 0, 0 keybd_event 13, 0, &H2, 0 Application.OnTime Now + 0.00001, "IeQUIT" End Sub Sub IeQUIT() IE.Quit End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Je n'ai plus de souci depuis un bail avec SendKeys sous IE9 comme avec IE11 !
Ce qui est gênant est juste de synchroniser VBA et le navigateur …
Le Sleep 100 n'est pas obligatoire ayant déjà indiqué que cela fonctionnait pourtant sans de mon côté
et ce sur plusieurs PC, mais il peut arriver que d'autres en aient besoin …
J'ai aussi rencontré des soucis avec keyb_event ! Comme là dans ton code tapant dans la fenêtre active …
Sinon ton code ne passe pas à la compilation, tu as activé quoi comme référence ?
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
re
aucune autre références que celle activée d'office pour un fichier
attention je suis en 32 bits si 64 adapter les api bien évidemment
et avec sendkey ou ui le sleep est carrément indispensable avec IE 11 sinon crash a tout les coup
avant que tu soupçonne mon Windows je t'annonce que j'ai formaté et réinstallé Windows au propre
puré plus de 3 heure a tous réinstaller w + programmes + app portable + et...
bref je suis a neuf
j'en ai même profité pour nettoyer mon disque et y faire une réparation de secteur j'avais des doutes ( non fondé visiblement)
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Dans ta procédure Bandeau, ligne n°50, où est donc défini RECT ?‼ (Provoquant l'erreur de compilation …)
Donc soit tu n'as pas publié l'intégralité du code, soit tu as une référence particulière activée …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
re
mille excuse des variables que j'ai pas viré
code au proppre
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 Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 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 Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Dim IE As Object, T! Sub Demo2keyapi() Const ELT = "ctl00_BodyABC_Button1" Dim Wb As Workbook, mess As String T = Timer For Each Wb In Workbooks If Wb.Name Like "Cotations*.csv" Then Wb.Close False Next Set IE = CreateObject("InternetExplorer.Application") With IE .Navigate "<a href="http://www.abcbourse.com/download/historiques.aspx" target="_blank">http://www.abcbourse.com/download/historiques.aspx</a>" 'Visible = True 'facultatif!!!!!!! While .ReadyState < 3 mess = "IE n'etait pas ready !!!" If Timer - T > 9 Then GoTo Fin Wend While Not IsObject(.Document.all(ELT)) mess = "l'object " & ELT & " n'a pas été trouvé " If Timer - T > 9 Then GoTo Fin Wend On Error GoTo Fin With .Document.all mess = "les elements n'ont pas pu etre mis a jours" .ctl00_BodyABC_strDateDeb.Value = "26/05/2015" .ctl00_BodyABC_strDateFin.Value = "26/05/2016" .ctl00_BodyABC_oneSico.Click .ctl00_BodyABC_txtOneSico.Value = "FR0000120222" .ctl00_BodyABC_dlFormat.Value = "x" .Item(ELT).Click End With ' .Visible = True mess = "relax ca va trop vite!!" Bandeau 'ou si on est dans un object anonyme "bandeau .document.parent" 'bandeau .document.parentWindow.Object End With Exit Sub Fin: MsgBox mess, vbCritical IE.Quit End Sub Sub Bandeau(Optional opt% = 1) Dim HIEFRAME As Long, i As Long, hwndIEedge As Long IE.Visible = True HIEFRAME = IE.hwnd 'FindWindow("IEFrame", vbNullString) Do 'recherche du handle bandeau DoEvents: i = i + 1 hwndIEedge = FindWindowEx(HIEFRAME, 0&, "Frame Notification Bar", vbNullString) 'recherche du handle de la fenetre de telechargement IE edge Loop While hwndIEedge = 0 Or i = 20000 ShowWindow hwndIEedge, 5 ' on active le badeau et le met au premier plan Sleep 1000 ' le sleep obligatoire chez moi sleep 100 suffit !!!! 'principe: ' action sur la touche , code ascii de la touche , 0=la fenetre active , le sens: 0=appuyé ou &h2=lacher , 0 tout le temps) ' l'avantage de cette methode par raport a sendkeys c'est que l'on est sur de taper sur la bonne fenetre avec le 2d argument(0=fenetre active) keybd_event 9, 0, 0, 0 keybd_event 9, 0, &H2, 0 If opt = 2 Then keybd_event 9, 0, 0, 0 keybd_event 9, 0, &H2, 0 End If keybd_event 13, 0, 0, 0 keybd_event 13, 0, &H2, 0 Application.OnTime Now + 0.00001, "IeQUIT" End Sub Sub IeQUIT() IE.Quit End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
186
ah!!... ben la j'en ai découvert une belle dis moi!!!!!!
je vais te demander de remplacer la fonction bandeau du post #186 par celle ci : comme tel sans modification
puis après que tues testé débloque la ligne 11 (teste sur le timer-T>9) et bloque la 12 avant le "or"
allez maintenant explique moi pourquoi avec le test en fin de boucle a 1 soit non seulement plus rapide mais je n'ai plus besoins du sleep
alors que en testant a 9 a l'intérieur de la boucle qui est plus long sans le sleep je suis bredouille
Ah ben je l'attends cette explication !!!!!!!!!
c'est hallucinant!!! j'ai l'impression que non seulement certaine fonctions comme sleep et wait sont bloquantes mais aussi que certaines fonctions comme ici le timer selon son mode d'utilisation ne donne vraiment pas le même résultat voir même l'opposé
et la c'est gros comme une maison !!!!!
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 Sub Bandeau(Optional opt% = 1) Dim HIEFRAME As Long, i As Long, hwndIEedge As Long, t2 IE.Visible = True HIEFRAME = IE.hwnd 'FindWindow("IEFrame", vbNullString) T = Timer Do 'recherche du handle bandeau DoEvents: hwndIEedge = FindWindowEx(HIEFRAME, 0&, "Frame Notification Bar", vbNullString) 'recherche du handle de la fenetre de telechargement IE edge 'If Timer - T > 9 Then Exit Do Loop While hwndIEedge = 0 Or Timer - T < 1 Debug.Print Timer - T ShowWindow hwndIEedge, 5 ' on active le badeau et le met au premier plan 'Sleep 1000 ' le sleep obligatoire chez moi sleep 100 suffit !!!! 'principe: ' action sur la touche , code ascii de la touche , 0=la fenetre active , le sens: 0=appuyé ou &h2=lacher , 0 tout le temps) ' l'avantage de cette methode par raport a sendkeys c'est que l'on est sur de taper sur la bonne fenetre avec le 2d argument(0=fenetre active) keybd_event 9, 0, 0, 0 keybd_event 9, 0, &H2, 0 If opt = 2 Then keybd_event 9, 0, 0, 0 keybd_event 9, 0, &H2, 0 End If keybd_event 13, 0, 0, 0 keybd_event 13, 0, &H2, 0 Application.OnTime Now + 0.00001, "IeQUIT" End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
• Code du post #186 :
une fois l'erreur de compilation corrigée encore une fois à cause du Navigate (‼),
sur deux configurations (Seven & IE9 et Windows 8.1 & IE11) échec lors du premier lancement !
Les lancements suivants, pas de souci …
• Quant à la modification du post #187, l'explication est pourtant simple : juste une erreur de logique !
Déjà, seule la fonction Wait peut poser un souci comparativement à Sleep à durée équivalente,
par exemple 0,8 seconde pour l'attente avant de confirmer le téléchargement,
il faut parfois augmenter la pause de Wait exagérément par rapport à la synchronisation effective avec IE.
Je n'ai constaté un rare souci seulement avec … DoEvents !
Revenons à la logique : ta ligne n°11 dans ta procédure modifiée occasionne une sortie de la boucle
avant l'apparition du bandeau de téléchargement et continue quand même la procédure !
Si tu compares avec mes codes, ce type de ligne au sein d'une boucle d'attente sert juste à éviter
une histoire sans fin de boucle infinie (site indisponible ou ramant trop par exemple)
afin d'arrêter la procédure au bout d'un TimeOut et non pas la continuer ! …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Bonjour Marc
ok si tu veux selon la logique mais je te dis que j'ai testé avec des debug .print
sans la ligne 11 le timer-T en fin de boucle est inferieur a 1
alors dis moi pourquoi en mettant un delay de 9 c'est plus long et je suis bredouille
alors non désolé c'est pas logique
met des debug.print tu verra
j'ai refait les test 10 fois avec le même phénomène en résultat
d'ailleurs met une marge de delay ,a la place de 9 met 100 pour être sur et laisse le test en fin de boucle
puis un 2d test en bloquant le"or"
regarde bien les temps !!!!
en général chez moi c'est 1.xxxxxxxx
alors pourquoi en mettant 9 je plante elle est ou la logique la dedans
d'ailleurs pour preuve j'ai repris mon model avec la souris qui lui exige le sleep 1000
et je lui est appliqué ce test en fin de loop pareillement et je te le donne dans le mille
plus besoins du sleep!!!
au pire avec l'un ou l'autre mettre 2 a la place de 1
la seule explication logique que j'ai glané sur la toile c'est que en quelque sorte le "or" se transforme en "and" ce qui explique que 1(0.7 seconde )+ le handle a 0 donc on est bon
d'ailleurs aussi j'ai mis 5 en fin de boucle pour tester et effectivement l'attente dure plus longtemps ce qui appuie la raison que je viens d'évoquer en rouge
en effet
loop while handle=0 or timer-t< 5 se comporte comme loop while handle=0 and timer-t< 5
je vais tester avec "xor" pour bien vérifier cette théorie
EDIT:
bon ben je confirme test a l'appuie c'est bien cela le "or" est considéré comme "and"
si je remplace "or" par "xor" ca plante a tout les coup
donc
Loop While hwndIEedge = 0 Or Timer - T < 2 est égale a Loop While hwndIEedge = 0 and Timer - T < 2
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Je n'ai donc pas été assez clair : de mon côté avec les modifications du post #187
le téléchargement ne se déclenche pas et ce sur les deux configurations
et déjà même avec le #187 avant de le modifier !
Donc de mon côté tes codes ne se synchronisent pas avec IE …
Seul le code du post #186 est passé à partir du deuxième essai !
Et je ne vois pas comment un And peut se transformer en Or ?‼
Tu as trouvé un code qui passe dans ta configuration (Windows, IE, perf processeur et connexion net)
- rien que toi en RTC et moi en câble ou sur un Intranet THD ! -
mais n'oublie pas que d'une configuration à une autre l'important est la synchronisation …
C'est pour cela je conclus souvent lors d'un pilotage d'IE : « Et vive les requêtes ‼ »
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Bonjour,
Marc, merci pour ton post 181 et le lien...pour le moment j'essaie de comprendre cela (mais je n'ai pas beaucoup de temps disponible pour étudier cela actuellement mais ca va venir)
Pour ne pas te retarder dans tes publications ne m'attends pas et si tu es d'accord je te poserai les questions au fur et à mesure
Idem pour Pat et Davido
Ce que vous faites c'est vraiment génial en tout cas
Bonne journée
Bonjour,
concernant le pilotage de Firefox avec UI Automation, je m'en sors avec EuroNext comme pour Abcbourse …
Je pensais auparavant mal utiliser une méthode de cette bibliothèque pour modifier du texte par exemple
mais en fait après avoir effectué des recherches, deux sources différentes confirment que parfois
ce n'est pas possible via UI Automation et dans ce cas il faut en passer par SendKeys par exemple,
retour à la case départ !
Afin de simplifier la procédure principale pilotant Firefox, je suis reparti d'une page blanche
et j'ai tout inclus au fur et à mesure des besoins dans une fonction avec un mode Debug
devenant peu à peu une grosse Bertha d'un peu plus de cent lignes de code !
Après cette refonte, je dois de nouveau procéder aux tests sur une configuration différente.
Pour l'instant je trouve l'intérêt se trouvant juste si l'utilisateur utilise par défaut Firefox
et si ce dernier est déjà ouvert, sinon cela a l'air de pencher en faveur d'IE (côté efficacité / fiabilité)
mais je dois encore mesurer tant sous IE9 comme avec IE11 comparativement à Firefox
sachant que le cache Windows joue énormément …
Firefox aurait plus d'intérêt avec un traitement rapide comme Abcbourse qu'avec un plus lent comme Euronext.
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Bonjour,
Lecture et étude en cours...les API commencent à rentrer tout doucement
Pour l'arborescence serait il possible de savoir où Davido au post #50 a pu afficher/trouver les informations sur son ordinateur sur les fenêtres avec les détails:
Handle 0A30097A IEFrame "Please specify the download format
Caption
Class
Style
Bonjour itwoo
window inspector ou autre
sinon j'ai un module prêt a l'emploi pour lister les fenêtres avec leur handle classe et caption
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Oui il y a quelques utilitaires gratuits : Microsoft Spy++, Winspector Spy, Window Detective, …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Bonjour,
Ok ok faut que je regarde ca!!! c'est un peu comme quant tu te balades en montagne quand tu arrives vers un sommet tu découvres qu'il y en a un autre derrière
Bonne journée
PS un petit hors sujet que j'effacerai d'ici aprés: si vous savez m'aider la dessus ca m'intéresse (en plus comme ca j'ai plus de temps pour ici)
http://www.developpez.net/forums/d16...ient-tendance/
re
perso je me sert de ca pour voir les données (classe,caption,handle) de mes fenêtres
près a l'emploi la liste est dans le debug
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 ' Déclaration des API utilisées Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long ' Variable temporaire utilisée uniquement par la fonction GetWindowsList ' pour stocker les fenêtres. Public stGetWindowsList As String 'Téléchargement des cotations pour - Internet Explorer 'Afficher les téléchargements - Internet Explorer Sub test11() 'GetWindowsList For i = 0 To UBound(GetWindowsList) Debug.Print GetWindowsList(i) Next End Sub ' Exemple d'utilisation : ' Dim tabFenetre ' tabFenetre = GetWindowsList Public Function GetWindowsList() ' Cette fonction retourne sous forme de tableau l'ensemble ' des titres des fenêtres de premier niveau ouvertes sous windows. Dim lgRep As Long stGetWindowsList = vbNullString ' Appel de l'API et envoi du pointeur vers notre fonction de rappel lgRep = EnumWindows(AddressOf EnumWindowsProc, 0) ' Découpage de la chaîne pour retourner un tableau GetWindowsList = Split(stGetWindowsList, vbCrLf) End Function ' Déclaration de la fonction de rappel Public Function EnumWindowsProc(ByVal lgHwnd As Long, ByVal lgParam As Long) As Long Dim stTmp As String, lgTmp As Long, lgRet As Long stTmp = Space$(120) Dim stTmp2 As String * 255 lgTmp = 119 lgTmp2 = 255 ' On récupère le titre de la fenêtre à partir du handle lgRet = GetWindowText(lgHwnd, stTmp, lgTmp) cl = GetClassName(lgHwnd, stTmp2, lgTmp2) stTmp = " handle : " & lgHwnd & "---caption : " & Replace(stTmp, Chr$(0), vbNullString) stTmp2 = Replace(stTmp2, Chr$(0), vbNullString) ' Stockage du résultat dans la chaine temporaire (ajout au texte existant). ' On pourrait imaginer construire une chaîne plus complexe en ajoutant également le handle ' de la fenêtre, ce qui permettrait des manipulations externes (comme une fermeture par exemple). If (Trim$(stTmp) <> vbNullString) Then stGetWindowsList = stGetWindowsList & Trim(stTmp) & "-- classe : " & Trim(stTmp2) & vbCrLf ' Retourne 1 systématiquement EnumWindowsProc = 1 End Function
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Correction de ta procédure test11 pour plus de rapidité :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub test11() Debug.Print Join(GetWindowsList, vbLf) End SubAu premier plan dans IE9 sous Seven j'ai le bandeau de confirmation de téléchargement d'Euronext :
il n'apparait pas dans la liste du debug dans la fenêtre Exécution ni la fenêtre principale "Please specify …" (Edit : voir le post #207 !)
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Oui d'accord, super, pour le moment ca avance...c'est cool, ok je regarde tout ca
installé window inspector et à ce porpos:
Sur le bandeau de tête juste une petite question avec le findow pour détecter ce bandeau il est possible soit d'utiliser son ClassName soit son WindowName soit les deux c'est bien ca?
son Classname "IEFrame" marche bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
par contre son WindowName "Please specify the download format | Euronext" ne marche pas...c'est bien ca son WindowName c'est le texte?
Code : Sélectionner tout - Visualiser dans une fenêtre à part hWnDEuronext = FindWindow("IEFrame", vbNullString)
hWnDEuronext = FindWindow(vbNullString, "Please specify the download format | Euronext")
ou
nom= "*Please specify the download format | Euronext*"
hWnDEuronext = FindWindow(vbNullString, nom)
hWnDEuronext = FindWindow("IEFrame", "Please specify the download format | Euronext")
bonne journée
Salut itwoo !
De toute manière pour la fenêtre principale d'Internet Explorer la fonction FindWindow est inutile
car le handle d'IE est déjà dans sa propriété HWND ! Exemple ligne de code n°6 du post #187 …
Quant au nom de la fenêtre, il est incomplet car voici ce que me retournent mes utilitaires :
Please specify the download format | Euronext - Windows Internet Explorer
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
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