[..] Transfert d'information de outlook vers un formulaire
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Transfert d'information de outlook vers un formulaire
Bonjour,
Nouveau sur ce forum parce que je découvre AutoIt et qu'il possède la possibilité d'envoyer des commandes simulant des touches clavier.
J'ai en effet une application professionnelle avec un formulaire à renseigner. Cette application est complètement "encapsulée" de sorte qu'il n'est pas possible de modifier l'interface.
Je cherche à automatiser le renseignement du formulaire à partir d'un mail contenant les informations. Je sais extraire les informations du mail et les mettre dans le presse papier via VBA par exemple. Mais je ne sais pas comment procéder pour lancer le renseignement du formulaire automatiquement à partir du presse-papier. Les différentes données peuvent être séparées de | par exemple et le presse-papier commencer par un mot clé.
Il y a aussi peut-être d'autres idées que le passage du presse-papier ? mais c'est une astuce que j'aime bien et que j'avais utilisée il y a environ 15 ans pour expliciter des termes techniques anglais abrégés et les rendre compréhensibles. C'était avec VB3.
Merci de votre aide.
Je vais de toute façon parcourir le forum et commencer mon apprentissage à AutoIt sur des cas plus simples.
Cordialement
Michel
(nota : c'est mon premier message, je n'ai pas vu de section présentation)
Nouveau sur ce forum parce que je découvre AutoIt et qu'il possède la possibilité d'envoyer des commandes simulant des touches clavier.
J'ai en effet une application professionnelle avec un formulaire à renseigner. Cette application est complètement "encapsulée" de sorte qu'il n'est pas possible de modifier l'interface.
Je cherche à automatiser le renseignement du formulaire à partir d'un mail contenant les informations. Je sais extraire les informations du mail et les mettre dans le presse papier via VBA par exemple. Mais je ne sais pas comment procéder pour lancer le renseignement du formulaire automatiquement à partir du presse-papier. Les différentes données peuvent être séparées de | par exemple et le presse-papier commencer par un mot clé.
Il y a aussi peut-être d'autres idées que le passage du presse-papier ? mais c'est une astuce que j'aime bien et que j'avais utilisée il y a environ 15 ans pour expliciter des termes techniques anglais abrégés et les rendre compréhensibles. C'était avec VB3.
Merci de votre aide.
Je vais de toute façon parcourir le forum et commencer mon apprentissage à AutoIt sur des cas plus simples.
Cordialement
Michel
(nota : c'est mon premier message, je n'ai pas vu de section présentation)
Re: [..] Transfert d'information de outlook vers un formulai
Bonjour,
Si l'application peut utiliser les objets COM, plus besoin du presse papiers
Si l'application peut utiliser les objets COM, plus besoin du presse papiers
Y01
Re: [..] Transfert d'information de outlook vers un formulai
Malheureusement non d'après ce que j'en sais !
Re: [..] Transfert d'information de outlook vers un formulai
Dans ce cas la, il faudrait mettre en forme les informations du mail dans un fichier INI qui est très bien lisible par AutoIt.
Y01
Re: [..] Transfert d'information de outlook vers un formulai
Merci pour les conseils.
Pour mon premier exercice, je vais rester fidèle à ma première idée : utiliser le presse-papier. Pourquoi ?
- mon expérience passée m'a montré que pour de petites applications, c'était pratique
- si excel et outlook peuvent créer un fichier .ini, ce n'est pas le cas d'un navigateur, mais javascript permet de sélectionner un texte en vue de le copier
Je pars donc sur l'idée d'avoir dans le presse-papier :
MAJvisiteur||Martin|Joseph|Microsoft|
où le | sera remplacé par une tabulation pour remplir les différents champs du formulaire.
AutoIt scrutera en permanence le presse-papier pour voir les changements, et si ce dernier contient en tête MAJvisiteur alors il enverra vers la fenêtre ad-hoc les keys correpondant au texte trouvé.
C'est bien beau, mais là je m'attaque à gros pour ma part à ce stade de mes connaissances.
Toute aide est la bienvenue pour me guider.
Amicalement
Michel
Pour mon premier exercice, je vais rester fidèle à ma première idée : utiliser le presse-papier. Pourquoi ?
- mon expérience passée m'a montré que pour de petites applications, c'était pratique
- si excel et outlook peuvent créer un fichier .ini, ce n'est pas le cas d'un navigateur, mais javascript permet de sélectionner un texte en vue de le copier
Je pars donc sur l'idée d'avoir dans le presse-papier :
MAJvisiteur||Martin|Joseph|Microsoft|
où le | sera remplacé par une tabulation pour remplir les différents champs du formulaire.
AutoIt scrutera en permanence le presse-papier pour voir les changements, et si ce dernier contient en tête MAJvisiteur alors il enverra vers la fenêtre ad-hoc les keys correpondant au texte trouvé.
C'est bien beau, mais là je m'attaque à gros pour ma part à ce stade de mes connaissances.
Toute aide est la bienvenue pour me guider.
Amicalement
Michel
Re: [..] Transfert d'information de outlook vers un formulai
Est-ce que tu as essayé d'utiliser l'outil Autoit Window Info avec ce formulaire ? Ca donne quoi ?Steelson a écrit :J'ai en effet une application professionnelle avec un formulaire à renseigner
C'est un formulaire de type web ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Transfert d'information de outlook vers un formulai
Bonjour Michel, vous trouverez ci-dessous une ébauche du traitement du contenu du presse papier. A vous d'adapter à votre guise. Ensuite il vous faudra donner quelques éléments supplémentaires pour le remplissage du formulaire. Il y a sur le forum des tas d'exemples qui devraient vous y aider. Si vous n'y arrivez vraiment pas, utilisez AutoIt Windows Info pour nous donner les éléments nécessaires, dés que quelqu'un en aura connaissance vous aurez sans aucun doute une réponse.
Code : Tout sélectionner
#include <Array.au3>
;MAJvisiteur||Martin|Joseph|Microsoft|
HotKeySet("{ESC}", "Terminate") ; Pour quitter le script appuyez sur ESC.
ClipPut("") ; On vide le presse papier
; Boucle infinie
While 1
Sleep(1000) ; Pause de 1s
$Datas = ClipGet() ; On récupère le contenu du presse papier.
If Not @error Then ; Si pas d'erreur on continue le traitement
If StringInStr($Datas, "MAJvisiteur") Then ; On vérifie le contenu à la recherche de "MAJvisiteur"
$aDatas = StringSplit($Datas, "|") ; Si on a trouvé "MAJvisiteur", on découpe la chaine.
ClipPut("") ; On vide le presse papier
; Ici vous devrez appliquer votre traitement de formulaire avec les données du tableau ci-dessous.
_ArrayDisplay($aDatas, "Données récupérées")
EndIf
EndIf
WEnd
; Fonction pour quitter le script.
Func Terminate()
Exit
EndFunc ;==>TerminateThierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Transfert d'information de outlook vers un formulai
Génial, merci ... je venais juste de terminer un programme sommaire avec notepad pour la mise à jour fictive ... une grande première (mais sans doute mal écrite !! à ajouter du reste la détection d'une erreur)
J'ai aussi changé le séparateur | en ; compatible avec fichier csv au cas où ...
J'ai aussi changé le séparateur | en ; compatible avec fichier csv au cas où ...
Code : Tout sélectionner
; lancement Notepad
If Not ProcessExists("notepad.exe") Then
Run("notepad.exe")
WinWaitActive("[CLASS:Notepad]")
$titre = WinGetTitle("[ACTIVE]", "")
$ref = WinGetHandle("[CLASS:Notepad]", "")
EndIf
do
; capture du presse-papier
$param = clipget()
If StringLeft($param,11) = "MAJvisiteur" then
WinActivate($titre, "")
$param = StringRegExpReplace($param,";","{TAB}")
Send($param)
Send("{ENTER}")
ClipPut("")
EndIf
sleep(5000)
until ($param = "STOP")Re: [..] Transfert d'information de outlook vers un formulai
Je suis en tain de tirer le meilleur de la réponse de Tlem ... et pour continuer, je voulais tester le fichier sous sa forme .exe
Après "compilation", le lancement me répond "Unable to open the script file"
-----------------------------------------------------------
Edit : j'ai recompilé en désactivant Avast! ... c'est ok.
Après "compilation", le lancement me répond "Unable to open the script file"
-----------------------------------------------------------
Edit : j'ai recompilé en désactivant Avast! ... c'est ok.
[R] Transfert d'information de outlook vers un formulaire
Je ferme le post, point résolu
Re: [..] Transfert d'information de outlook vers un formulai
C'est peu propre de récuperer le texte du presse papier toutes les X secondes, notamment certains antivirus n'aiment pas trop ca.
On peut remédier à ce problème en créant un script plus propre qui récupère le presse-papier seulement après un changement.
Cf l'aide de _ClipBoard_SetViewer. Il suffit alors de rajouter votre test de string dans la fonction WM_DRAWCLIPBOARD.
On peut remédier à ce problème en créant un script plus propre qui récupère le presse-papier seulement après un changement.
Cf l'aide de _ClipBoard_SetViewer. Il suffit alors de rajouter votre test de string dans la fonction WM_DRAWCLIPBOARD.
Code : Tout sélectionner
#include <Clipboard.au3>
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <WindowsConstants.au3>
Global $g_idMemo, $g_hNext = 0
Example()
Func Example()
Local $hGUI
; Create GUI
$hGUI = GUICreate("Clipboard", 600, 400)
$g_idMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL)
GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
GUISetState(@SW_SHOW)
; Initialize clipboard viewer
$g_hNext = _ClipBoard_SetViewer($hGUI)
GUIRegisterMsg($WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN")
GUIRegisterMsg($WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD")
MemoWrite("GUI handle ....: " & $hGUI)
MemoWrite("Viewer handle .: " & _ClipBoard_GetViewer())
; Loop until the user exits.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Shut down clipboard viewer
_ClipBoard_ChangeChain($hGUI, $g_hNext)
EndFunc ;==>Example
; Write message to memo
Func MemoWrite($sMessage = "")
GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite
; Handle $WM_CHANGECBCHAIN messages
Func WM_CHANGECBCHAIN($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
; Show that message was received
MemoWrite("***** $WM_CHANGECBCHAIN *****")
; If the next window is closing, repair the chain
If $wParam = $g_hNext Then
$g_hNext = $lParam
; Otherwise pass the message to the next viewer
ElseIf $g_hNext <> 0 Then
_SendMessage($g_hNext, $WM_CHANGECBCHAIN, $wParam, $lParam, 0, "hwnd", "hwnd")
EndIf
EndFunc ;==>WM_CHANGECBCHAIN
; Handle $WM_DRAWCLIPBOARD messages
Func WM_DRAWCLIPBOARD($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
; Display any text on clipboard
MemoWrite(_ClipBoard_GetData())
; Pass the message to the next viewer
If $g_hNext <> 0 Then _SendMessage($g_hNext, $WM_DRAWCLIPBOARD, $wParam, $lParam)
EndFunc ;==>WM_DRAWCLIPBOARD




