Navigation automatique sur internet

gast07 Messages postés 2 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 5 juillet 2005 - 4 juil. 2005 à 20:11
jardinvb6 Messages postés 13 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 5 février 2014 - 15 janv. 2009 à 12:13
Bonsoir, voici mon problème :

Je souhaite créer un programme qui se connecte automatiquement sur un site internet. Pour cela j'ai créé un objet webbrowser qui va sur la page internet désirée. Sur cette page se trouve deux textbox qui sont remplies automatiquement et un bouton qui post les deux données des textbox est activé automatiquement. Jusque la tout va bien ! Ensuite il ouvre donc une nouvelle page qui lance une boite de dialogue javascript de type alert() C'est la que la chose se corse : je voudrais d'une part recuperer le message contenu dans cette boite de dialogue, et d'autre part la fermer.

J'espere que j'ai ete assez clair et que vous pourrez m'aider à resoudre ce petit probleme.

A+

3 réponses

cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
4 juil. 2005 à 20:55
Hello
Pour fermer la boite, tu peux envoyer un sendkeys avec comme touche la touche entrer, ce qui la fermera.
sendkeys "{ENTER}"
Il faut s'assurer aussi que ton application a le focus pour ne pas envoyer la frappe ailleurs ...
Declare Function GetFocus Lib "user32" Alias "GetFocus" () As Long
Et tu regarde si le handle envoyé par GetFocus correspond à celui de ta form.
Pour récupèrer le message, je ne vois qu'une solution, c'est de récuperer le code source de ta page qui contient le message alert et la scanner pour trouver le message (en utilisant les balises javascript alert etc) Apres, la, je ne vois pas comment faire éxactement, soit l'ocx webbrowser contient une function qui permet de retourner le code source, soit tu sert l'ocx inet (ou les API qu'il utilise, voir plus bas l'exemple). Apres, faut faire le code de scan mais ça dépend de ta page.


Exemple de recupération d'une page web de l'API GUIDE


Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://www.microsoft.com/index.htm"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: [mailto:KPDTeam@Allapi.net KPDTeam@Allapi.net]


Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
'Create a buffer for the file we're going to download
sBuffer = Space(1000)
'Create an internet connection
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
'Open the url
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
'Read the first 1000 bytes of the file
InternetReadFile hFile, sBuffer, 1000, Ret
'clean up
InternetCloseHandle hFile
InternetCloseHandle hOpen
'Show our file
MsgBox sBuffer
End Sub

J'espere que cette réponse t'éclaircira ;)

@Z3RtY25 ==
0
gast07 Messages postés 2 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 5 juillet 2005
5 juil. 2005 à 14:10
Merci beaucoup pour ta réponse, je vais essayer de faire ça... J'avais essayé auparavant avec le sendkey mais ça ne marchait pas, je suppose que c'était justement parce que mon application n'avait pas le focus : je n'avais pas pensé a le vérifier... ;-)

A+
0
jardinvb6 Messages postés 13 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 5 février 2014
15 janv. 2009 à 12:13
Bonjour gast07
le post est assez ancien, mais ton essai m'interesse
j'ai le meme probleme de remplissage de textbox dans une page web avec un WebBrowser
J'y arrive actuellement avec sendkeys, en positionnant la souris sur la zone
le probleme c'est que la position de la zone de texte varie d'un jour a l'autre, le nom de la fenetre ne change pas
J'ai essayé d'utiliser GetElementId, mais ca ca ne marche pas ou je n'ai pas trouvé la bonne syntaxe.  
si ce message te parvient ,Merci d'avance
APISOURCE
0
Rejoignez-nous