COURS DE PILOTAGE........D'APPLICATIONS

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 23 janv. 2010 à 13:32
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011 - 29 juin 2011 à 20:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51165-cours-de-pilotage-d-applications

ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
29 juin 2011 à 20:47
Pourquoi ce code ne marche pas? (ni avec WORD,EXCEL alors que c'est ok avec NOTEPAD).Aucune erreur se produit, l'appli en question s'ouvre et passe au premier plan, puis c'est tout.
Merci pour une reponse

Private Sub Form_Click()

Dim h As Long, retval As Long, h2 As Long, h3 As Long
Dim posit As Long

retval = Shell("C:\Program Files\OpenOffice.org 3\program\swriter.exe", vbNormalNoFocus)
h = FindWindow("SALFRAME", "Sans nom 1 - OpenOffice.org Writer")

If preplan Then
lgConst = HWND_TOPMOST
Else
lgConst = HWND_NOTOPMOST
End If
posit = SetWindowPos(h, lgConst, 10, 10, 400, 400, &H100)

AppActivate "Sans nom 1 - OpenOffice.org Writer"

SetForegroundWindow (h)

' on active le premier element de la Barre de menus pour cela on simule "Alt"
PostMessage h, WM_KEYDOWN, VK_MENU, 0
PostMessage h, WM_KEYUP, VK_MENU, 0
' on simule la fleche vers la droite pour se deplacer dans le menu
PostMessage h, WM_KEYDOWN, VK_RIGHT, 0 'touche enfoncee
PostMessage h, WM_KEYUP, VK_RIGHT, 0 'touche relevee

'on simule la fleche vers le bas pour derouler le menu selectionne
PostMessage h, WM_KEYDOWN, VK_DOWN, 0
PostMessage h, WM_KEYUP, VK_DOWN, 0

'on simule la touche entree pour afficher la boite de dialogue
PostMessage h, WM_KEYDOWN, VK_RETURN, 0
PostMessage h, WM_KEYUP, VK_RETURN, 0
Exit Sub
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
23 juin 2011 à 13:19
Tout à fait d'accord, je connais bien l'Automation, mais mon but final est de piloter framemaker (car pour des operations precises il faut manipuler un grand nombre de selections) et là l'automation est tres reduite; et cela ne m'explique pas pourquoi postmessage ou senmessage ne fonctionnent pas alors que spy enregistre bien les commandes avec des item menu.(valable pour open office..?)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 juin 2011 à 09:58
Pour piloter Word et Excel, possible de passer par l'Automation (Comme VBA)

GetObject(,"Word.Application")

etc.
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
22 juin 2011 à 20:05
Bonjour
Enfin sur la base de ton code j'arrive à piloter et meme modifier wordpad ou notepad, parcontre d'autres appli comme word,excel, writer,framemaker cela ne marche pas. SPY ne voit pas les commandes WM_COMMAND, il envoi des WM_SYSKKEYDONW,WM_SYSKEYUP .....Je n'arrive pas à reproduire ces commandes sous vb, rien ne marche.
Si tu as une idée cela m'aiderais bien
Merci
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
20 juin 2011 à 16:13
Bonjour,
Je precise mon pb:avec la cde 'sendmessage wm_command,2,0& ' j'ouvre bien la boite de dialogue fichier, mais ensuite mon progr vb perd la main car c'est une boite modale, donc toutes mes commandes suivantes ne sont pas executées tant que la boîte est ouverte.Or je veux remplir avec vb la zone de texte du 'nom de fichier' (en fait je voudrais piloter complètement les menus de notepad.Merci pour une bonne idée
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
17 juin 2011 à 17:30
Bonjour,

Merci pour ta reponse, grace à toi sur le modele de ton code je parviens à ouvrir le menu fichier de notepad. Mais je n'arrive pas à obtenir le handle de la zone de saisie du nom de fichier à ouvrir (avec spi j'ai la classe mais c'est la meme que la zone d'ecriture alors comment faire). Dautre part il y a t il un moyen de simuler des combinaisons de touches.
Merci si tu as compris ce que JE demande et si tu as une idee.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juin 2011 à 09:59
"j'ai du copier..."
le code est effectivement dans un module (voir le .Zip)

pour l'ID, c'est avec Spy++ (voir .doc dans le zip)

pour ton handle, a voir s'il ne faut pas attendre que le process en face soit lancé (WaitForInputIdle)
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
15 juin 2011 à 17:49
Bonjour et merci pour ce code

J'ai testé et pour que cela marche j'ai du coller toutes les functions et les declarations api dans un module, cela marche donc tres bien avec la calculatrice. Maintenant je fais un test avec open writer qui s'ouvre bien avec la commande shell, je recupère bien le handle mais le lParam est toujours <> du nPID, donc message "Fenêtre pas trouvée".
Autre question comment trouver la bonne valeur numerique 304 dans ce code pour ouvrir le bon menu SendMessage hMainWnd, WM_COMMAND, 304, ByVal 0&
Bon but etant de piloter des appli comme FrameMaker avec vb
Meri pour ta reponse
PTARD
Runs59 Messages postés 2 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 1 octobre 2010
14 mars 2011 à 11:26
Superbe ! Ca fait 2 jours que je planche dessus et tu me débloques !
Merci de mettre à disposition ce savoir.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 juin 2010 à 20:58
le programme a été recode...
les ID des touches ne collent certainement pas.

tu as la méthode dans le cours, tu dois pourvoir faire le nécessaire ^^

non ??
olivbout Messages postés 7 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 3 février 2013
3 juin 2010 à 17:39
Problème sur mon poste sous Windows 7, la calculette se lance mais rien d'autre ne se passe, les commandes semblent ignorées... sais tu pourquoi?
olivbout Messages postés 7 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 3 février 2013
28 mai 2010 à 13:31
Ok super merci ca marche maintenant
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mai 2010 à 12:18
Il faut qu'elle soit publique:

Public Sub Main
olivbout Messages postés 7 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 3 février 2013
28 mai 2010 à 09:36
Et bien en fait j'ai fait un copier coller dans le code de ma form et créé un bouton qui appel la fonction main.... mais ca ne marche pas.
Suivant tes conseils j'ai mis ton fichier ModMain.bas dans un "modules" mais la je n'arrive pas à lancer la procedure main...
Merci de ton aide.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mai 2010 à 07:21
ta EnumWindowsProc est bien place dans un module .bas ?
olivbout Messages postés 7 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 3 février 2013
27 mai 2010 à 23:58
Bonjour,
pourquoi ca ne marche pas chez moi???
J'ai une erreur: dans la fonction:
Private Function GetWndFromProcessID(ByVal vnPID As Long) As Long
EnumWindows AddressOf EnumWindowsProc, vnPID
GetWndFromProcessID = mhFoundWnd
End Function
il me met:
Invalid use of AdressOf operator !!!!
J'ai essayé en vb6 e vba excel mais c'est la même chose.
Merci de votre aide et bravo pour le travail.
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
18 mars 2010 à 23:24
ok merci pour l'info
c'est bon a savoir ça

merci merci ^_^
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2010 à 23:17
une boucle Do While ... Loop
n'est pas une bonne chose si le temps de traitement est incertain (boucle sans fin ?)

il faut relacher un peu le processeur et redonner la main a Windows.
DoEvents permet de redonner la main a l'interface pour montrer a windows que ton appli est pas crashée...

tu sais, parfois, ca indique "(ne réponds pas)" dans la barre de titre de certaines applis...

...
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
18 mars 2010 à 22:51
ok merci j'ai fait autremet mais il faudra que je me repenche la dessus
ça m'agase de pas y arriver

juste une dernier histoire de
Application.DoEvents()
ça sert a quoi exactement ?

En tout cas encore 1000 merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2010 à 21:49
c'est idem, le tout est de se raccrocher au IE.Document

mais oublie ce genre de boucles :

For Each ElementHtml As HtmlElement In LaPage
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
18 mars 2010 à 21:32
Application.DoEvents()
je connais pas ça...

alors merci merci merci beaucoup
mais je n'est pas de webbrower
moi je voudrais que ce soit avec Internet Explorer

bon c'est pas grave
merci merci encore
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2010 à 21:04
et voilà ^^

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.Navigate("http://www.facebook.com")
Do
Application.DoEvents()
Loop Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
WebBrowser1.Document.GetElementById("email").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("pass").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("login_form").InvokeMember("submit")
End Sub

le code de ce matin a été fait de tête... du coup c'etait de l'a peu pres

là c'est testé etc.
c'est fait sous Visual Studio (2005)
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
18 mars 2010 à 20:28
Marche pas non plus

Dim IE As New InternetExplorer
Dim LaPage As HTMLElementCollection


ie = New InternetExplorer
ie = CreateObject("InternetExplorer.Application")
IE.Navigate("www.facebook.com")
IE.Visible = True
Do While IE.ReadyState <> tagREADYSTATE.READYSTATE_COMPLETE
Loop

LaPage = IE.Document
Try
For Each ElementHtml As HtmlElement In LaPage
ElementHtml.Document.GetElementById("email").InnerHtml = "monemail@societe.com"
ElementHtml.Document.GetElementById("password").InnerHtml = "abracadabra"
ElementHtml.Document.InvokeScript("click")

Next
Catch
MsgBox("Erreur")
End Try
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
18 mars 2010 à 20:05
ça crée une erreur
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
18 mars 2010 à 19:28
merci
Ah ! je suis vraiment desolé
mais ça marche pas:

Dim IE As New InternetExplorer
IE = New InternetExplorer
IE.Visible = True
IE.Navigate("www.facebook.com")

If IE.ReadyState = tagREADYSTATE.READYSTATE_COMPLETE Then
IE.Document.GetElementByID("email").Value = "monemail@societe.com"
IE.Document.GetElementByID("password").Value = "abracadabra"
IE.Document.GetElementByID("login_form").submit
End If

:[ Help me please !

En tout cas merci merci beaucoup de repondre a tout mes messages :]

ah au faite ton appli : http://www.vbfrance.com/code.aspx?ID=25669 j'ai une erreur avec VB2008 Express
quand je clic sur le bouton 'rechercher'
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2010 à 07:43
GetElementsByTagName ??

euh, tu te compliques la vie ^^

GetElementsByName("produit_nom")[0] irai bien...

ou bien, pour facebook :

le tout etant d'avoir attendu que le .readystate indique la fin du chargement de la page...

GetElementByID("email").Value = "monemail@societe.com"
GetElementByID("password").Value = "abracadabra"
GetElementByID("login_form").submit
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
17 mars 2010 à 19:53
ps: je suis sur Visual Basic 2008 Express
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
17 mars 2010 à 19:52
oui j'ai deja telechargé
mais ça marche pas !

je vais expliquer mon truc, enfin essayer, c'est tout bete mais ....

je voudrais que :

quand je clic sur un bouton ça m'ouvre une page Internet Explorer direct sur le site que je veux et que ça me connecte tout seul

Par exemple:
je clic sur le bouton et Facebook s'ouvre et active mon compte tout seul.

Voila je sais ça doit etre tout bete mais j'avoue que je galere ...
merci de m'aider pour ça deja

voila ce que j'ai deja essayé:

Dim ie As New InternetExplorer


ie = New InternetExplorer

ie.Navigate2("www.facebook.com")



'ie.Visible = True



'Dim theElementCollection As HTMLElementCollection

'theElementCollection = ie.Document.GetElementsByTagName("input")
'For Each curElement As HtmlElement In theElementCollection
' Dim controlName As String = curElement.GetAttribute("name").ToString
' If controlName = "produit_nom" Then
' curElement.SetAttribute("Value", SnomTextBox.Text.ToString)

'
' End If
'Next



'theElementCollection = ie.Document.GetElementsByTagName("input")
'For Each curElement As HtmlElement In theElementCollection
' If curElement.GetAttribute("value").Equals("Ok") Then
' curElement.InvokeMember("click")
'
' End If
'Next

je sais pas ce que ça vaut

merci merci .
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 mars 2010 à 05:46
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
17 mars 2010 à 00:37
MSN j'arrive a faire 2 ou 3 truc

mais internet explorer lui par contre oula !

J'arrive meme pas a me connecter automatiquement a facebook.
Comment on fait juste ça deja ?

Si vous avez un site ou un tuto pour le pilotage de IE et Excel, c'est eu qui m'interressent le plus pour le moment.

Merci d'avance et merci d'avoir repondu ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 mars 2010 à 22:25
Outlook, Excel et Word, déjà, c'est simple, ils sont entièrement pilotables depuis longtemps, via COM (et l'Interop, dans ton cas).

creuse un peu du coté des Excel.Application, etc

pour IE, il est possible de manipuler la page via le DOM

MSN, lui, propose certaines API et un activeX, me semble, également.

si y'a des questions plus précises...
n'hésites pas
nicolasq150784 Messages postés 51 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 23 avril 2010
16 mars 2010 à 22:15
salut cool ce petit pilotage.

Moi j'apprend tout juste avec vb2008.

C'est pour ça que le phrase de Renfield, je cite :
"Ravi de voir que ca sert, et que le niveau pédagogique vous convient.
Si vous souhaitez d'autres exemples particuliers, n'hésitez pas à m'en faire part"

m'a interpellé ;)

Voila je voudrais apprendre a piloter plusieurs application Windows.
- Internet Explorer
- MSN
- Outlook
- Excel
- Word
- ...

Voila donc si vous avez des codes source, des liens de site qui propose des codes source merci hésitez pas

Merci beaucoup d'avance
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 févr. 2010 à 22:15
dur de dire sans visu live, désolé
media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
21 févr. 2010 à 19:53
Bonsoir,

Je suis toujours bloqué avec mon problème de fenêtre modale.
Je n'ai aucun contrôle dessus même avec postmessage.
J'ai beau lancer des postmessage (au lieu de sendmessage), ils doivent rester dans la file d'attente des messages de la fenêtre modale...
Renfield, tu as sûrement la solution !!!
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013
15 févr. 2010 à 17:49
La solution MSAA fonctionne parfaitement, et j'ai bien accès au DOM de la page WEB qui m'interesse.

Mais pour piloter complètement l'appli, il faut que j'aille plus loin et que je puisse récupérer les évènements (en particulier le document_complete après un submit par ex.)

Et là, je ne vois pas très bien comment faire...

Sniff...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 févr. 2010 à 14:07
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013
11 févr. 2010 à 13:38
Bonjour

On me demande pour le boulot, d'écrire un prog capable de piloter une appli externe.

L'appli à piloter est une appli Windows qui 'encapsule' un navigateur WEB.
L'analyse par SPY++ donne les infos suivantes:

Liste des fenêtres :
00000001 "APPLI xxx" TWINDOW1
00001001 "" TWINDOW1
00002001 "" TWINDOW1
00003001 "" Shell Embeddig
00004001 "" Shell DocObjet View
00005001 "" Internet Explorer_Server
------------------------

Le but est de piloter les pages WEB du navigateur via le DOM.

Le problème est que la fenêtre n'est pas visible dans la collection retournée par la boucle CreateObject("Shell.Application").Windows

Je n'ai donc à ma disposition que le handle de la fenêtre Internet Explorer_Server

Est-il possible de récupérer un objet "fenêtre" à partir de ce handle de façon à faire du DOM ???

Merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 févr. 2010 à 12:52
n'utilises pas BM_CLICK...

la doc ne lui donne pas raison :

http://msdn.microsoft.com/en-us/library/bb775985(VS.85).aspx

If the button is in a dialog box and the dialog box is not active, the BM_CLICK message might fail. To ensure success in this situation, call the SetActiveWindow function to activate the dialog box before sending the BM_CLICK message to the button.
media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
11 févr. 2010 à 12:40
Précision pour le message ci-dessus, c'est quand winspector donne :
Code: BN_CLICKED
Control ID: 1234
Control HWND: 0x00150A62

La commande est donc :
PostMessage CLng(&H150A62), BM_CLICK, 1234, ByVal 0& 'ou sendmessage
media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
11 févr. 2010 à 12:35
Merci pour ta réponse, j'ai déjà essayé mais ça ne fonctionne pas.
Je vais continuer mes tests !

Sinon pour le bouton, j'ai trouvé :

PostMessage CLng(&H150A62), BM_CLICK, 1234, ByVal 0&

en ayant bien sûr déclaré la constante :
Private Const BM_CLICK As Long = &HF5
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 févr. 2010 à 11:46
SendMessage attend que l'application ciblée réponde

voir PostMessage pour un retour immédiat
media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
11 févr. 2010 à 11:34
Après plusieurs tests, je me suis aperçu qu'en fait, le problème que je rencontre ne vient pas du bouton...
Je vais essayer de l'expliquer :
J'essaye de piloter une application métier qui s'appelle Alphacam.
Cette application est pilotable en VBA mais toutes les fonctions ne sont pas disponibles... (Zut !)

Tout d'abord, je trouve le hwnd de la fenêtre "Alphacam": ça fonctionne.
Puis je lance :

ret = SendMessage(hwndF, WM_COMMAND, 32839, ByVal 0&) '32839 est donné par winspector : ça fonctionne
MsgBox ret

Le problème est que je n'ai plus la main jusqu'à ce que la commande soit terminée manuellement dans Alphacam.
La commande 32839 affiche un bouton sur lequel je dois cliquer, puis cliquer sur la pièce affichée à l'écran, etc...

Mon msgbox s'affiche uniquement quand j'ai fini de faire tout ça à la main.
Je ne sais pas comment interagir avec Alphacam pour automatiser ces opérations.
Je voudrais pouvoir faire quelque chose du genre :

SendMessage(hwndF, WM_COMMAND, 32839, ByVal 0&)
SendMessage(hwndF, WM_COMMAND, 32825, ByVal 0&)
SendMessage(hwndF, WM_COMMAND, 1234, ByVal 0&)

Est-ce qu'il y a un moyen de contourner ça ?
J'ai essayé avec postmessage qui fait exactement la même chose.
Je sèche un peu...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 févr. 2010 à 09:58
Je dirai :

SendMessage 0x00460336, WM_COMMAND, 1234, ByVal 0&
media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
10 févr. 2010 à 18:10
Super ! Impeccable.

Une petite question toutefois :
Quand on obtient ça avec Winspector, comment on le renvoie avec sendmessage :
Code: BN_CLICKED
Control ID: 1234
Control HWND: 0x00460336

J'ai essayé de le renvoyer avec BN_CLICKED et BM_CLICK mais il n'y a rien à faire.

Merci d'avance.
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013
10 févr. 2010 à 11:59
A l'attention de MMATHIEUU :

Voici le code VB.Net qui t'interresse :

Dim shellWindows As SHDocVw.ShellWindows = New SHDocVw.ShellWindowsClass()

For Each oIE As SHDocVw.InternetExplorer In shellWindows
If TypeName(oIE.Document).ToString = "HTMLDocumentClass" Then
MsgBox(oIE.LocationURL)
End If
Next
mMathieuU Messages postés 13 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 9 février 2010
9 févr. 2010 à 08:52
Salut Jocou, si tu arrives à transposer en vb.net ça m'intéresserai de voir ton code. Merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 févr. 2010 à 05:40
bien que cela doive etre proche... je ne code pas en .Net ...
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013
8 févr. 2010 à 18:11
Super, ca marche du tonnerre...

Mais j'ai du mal à transposer en VB.Net : j'arrive simplement à obtenir une liste de handles, mais pas une collection de fenêtres comme en VB6. Connais-tu une solution ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 févr. 2010 à 16:26
Il est possible d'énumerer les instances de IE et Explorer (même combat) présentes sur le poste.

ensuite, soit tu identifie la fenetre "souhaitée" en regardant le titre, l'url, le hWnd ...

utilises ce genre de boucle :

Dim oWindow
For Each oWindow In CreateObject("Shell.Application").Windows
If TypeName(oWindow.Document) = "HTMLDocument" Then
MsgBox oWindow.LocationURL
End If
Next
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013
8 févr. 2010 à 16:13
Bravo pour le tutorial

J'ai cependant une question concernant le pilotage d'une appli WEB :

Comment faire pour piloter un IE déjà lancé sur le poste de travail et non pas une nouvelle instance créée dans le prog. de pilotage ?

Une petite suggestion pour finir : publier un tuto de la même qualité sur l'objet WinHttpRequest

Merci
mMathieuU Messages postés 13 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 9 février 2010
4 févr. 2010 à 14:19
Bon ba j'ai pas les sources au travail, j'essayerai chez moi ...
Merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 févr. 2010 à 14:07
comme dit plus haut :

"c'est du VB6.... faut le charger avec Visual Basic 6."
mMathieuU Messages postés 13 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 9 février 2010
4 févr. 2010 à 14:05
évidement ... faut que je prenne quoi comme logiciel ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 févr. 2010 à 14:00
non ^^
mMathieuU Messages postés 13 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 9 février 2010
4 févr. 2010 à 13:57
Visual studio 2005 gère pas le vb6 ?
mMathieuU Messages postés 13 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 9 février 2010
4 févr. 2010 à 11:41
ok je teste ça tout de suite, merci de ta réponse rapide.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 févr. 2010 à 11:40
c'est du VB6.... faut le charger avec Visual Basic 6.

je pense que tu as tenté de l'ouvrir sous Visual Studio (pour .Net)
mMathieuU Messages postés 13 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 9 février 2010
4 févr. 2010 à 11:37
Salut, je pense que ça vient de moi (ou plutôt de mon visual studio) mais ton code sources ne marche pas ... même en faisant un copier collé bête et méchant ... mais bon Visual Studio me repère pas mal d'erreur de syntaxe, je sais pas pourquoi .
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 17:48
Ravi de voir que ca sert, et que le niveau pédagogique vous convient.

Si vous souhaitez d'autres exemples particuliers, n'hésitez pas à m'en faire part
mafieulemouton Messages postés 24 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 janvier 2010
26 janv. 2010 à 16:43
Merci beaucoup! Pour moi qui débute c'est un vrai bonheur de trouver enfin quelques explications simples sur le contrôle d'application.
cs_Nectar108 Messages postés 16 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 22 avril 2013
25 janv. 2010 à 03:00
Wow ! Super .... Bravo et gros merci pour ce tutoriel ! Il est simple, clair et facile à comprendre, un document de grande qualité (pour moi en tout cas !). Chapeau bas monsieur ! J'apprécie énormément ce genre de document. Cela fonctionne et donne un sérieux "coup de main" à qui veut avancer dans le domaine. Merci encore, et je vous encourage à en écrire d'autres comme celui-ci, voire à approfondir ce sujet. Super !
XelectroX Messages postés 209 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 6 novembre 2009
24 janv. 2010 à 20:11
Génial Merci !
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 janv. 2010 à 13:32
Un grand merci à toi, Renfield

Suite à ta réponse sur une question que j'avais posée concernant ce sujet, je n'ai jamais eu le temps de m'y mettre et de faire des tests. Mais là, j'ai une semaine de vacances et j'espère bien pouvoir y passer au moins une journée...

Je n'ai pas regardé encore les fichiers joints, mais je sens que ça va m'être bien utile... ;)

Merci encore...
Rejoignez-nous