Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Piloter une autre application (SendMessage) [ Divers / Aide et documentation ] (jnmchl)

vendredi 28 mars 2008 à 23:31:13 | Piloter une autre application (SendMessage)

jnmchl

Membre Club

Bonjour,

Je cherche à faire une application qui sert d'interface entre une application personnelle et une application professionelle : j'explique l'historique et le boulot :
Je dois traiter des données que j'exploite selon ma stratégie et que je devais jusque là rendre à ma direction sous forme de fichier XLS selon un canevas fourni. Pour gagner du temps, je me suis fais une application sous Delphi pour m'aider dans le traitement de ces données et qui inclue également des fonctions propres à ma stratégie, cette appli générait directement le fichier XLS demandé par ma direction. J'ai ainsi toujours obtenu de bons résultats fiables et rapides.
Aujourd'hui, la direction a changé son logiciel : mon boulot reste le même sauf que la direction ne veut plus de fichiers XLS mais les données doivent être saisies par moi dans une interface reliée au système. J'ai râlé mais ma direction ne veut rien entendre : pour eux ils me demandent le même boulot mais au lieu de saisir sous XLS je dois saisir dans leur interface (au demeurant pas très ergonomique). Sauf que moi, je perds un temps précieux à ressaisir tout ce que me crache mon application et qui se fait au détriment de la quantité et qualité de mon travail.
En fait, je me suis renseigné et j'ai un peu exploré le système : leur interface est juste un masque de saisie et quelques contrôles de cohérence écrit en Visual Basic connecté à une base ORACLE avec Tuxedo. Je m'interdis d'entrer directement dans la base : c'est trop risqué. Mon idée est donc de faire une appli d'interface pour saisir à ma place et transférer mes données dans leur interface VB.

En utilisant GetWindows, GetNextWindows et SendMessage, j'arrive à lire et écrire dans les contrôles via leur handle. Un essai manuel et partiel fonctionne. Reste maintenant à être séquentiel et tout mettre dans le bon ordre, mais là j'ai un problème qui fait l'objet de ma question :

Les handles changent à chaque fois que l'appli est relancée : je ne peux donc pas les mémoriser, et d'essayer d'identifier quel handle correspond tel ou tel autre contrôle à chaque fois est long et fastidieux.
Donc, comment reconnaitre à coup sûr qu'un numéro de handle correspond bel et bien à un contrôle donné ?
Avec GetWindowText je récupère bien le texte pour les boutons, mais sur des onglets différents : il y a des boutons différents qui portent le même caption (Valider, Annuler ...), et en plus il y a beaucoup de TextBox (ThunderRT6TextBox) ... qui eux n'ont pas de texte ?  
Comme je ne suis pas l'auteur de l'interface en VB je ne connais pas la structure de la form, je me demande s'il est possible de récupérer le nom (la propriété Name) que l'auteur à donné à chaque composant pour m'adresser à son handle de manière sûre ? un "GetComponentName" ?
Ou existe-t-il un autre moyen ? les retrouver par leurs coordonnées top, left : avec les onglets ce n'est pas fiable et je ne sais pas comment faire ? ou l'ordre chronologique de création ?   

De plus, j'ai une autre question comment remplir avec SendMessage les cellules d'un tableau MSFlexGridWndClass ?

J'espère avoir été assez clair dans ma requête, bien sûr je n'attends pas forcément la solution entière mais si ceux d'entre vous qui connaissent un peu le sujet peuvent apporter une brique à l'édifice, ou émettre une idée ... merci d'avance. Même si je programme surtout en Delphi des explications sous VB ou C++ sont les bienvenues.

Jean-Michel


samedi 29 mars 2008 à 00:03:32 | Re : Piloter une autre application (SendMessage)

Caribensila

Membre Club
Salut,

Pourquoi ne pas passer simplement par le plus ancien moyen de communication inter-processus : le clipboard?

samedi 29 mars 2008 à 10:49:07 | Re : Piloter une autre application (SendMessage)

jnmchl

Membre Club
Merci,
Ben c'est ce que je fais actuellement pour gagner un peu de temps, mais pour renseigner 37 TextBox, 4 MSFlexGrid (=StringGrid en Delphi) appuyer sur 5 boutons radio et naviguer dans 6 onglets et 4 clics sur des boutons "Valider" ... et j'en oublie sans doute ... les copiers coller restent fastidieux et je fais pas mal d'erreurs ...
Toutefois, j'avais pensé à une espèce d'automate : càd qu'en connaissant les emplacements des différents contrôles simuler la position de la souris, les clics doubles clics et  le clavier ... mais : 
1) ça me paraissait pas très pro et puis faut s'assurer que la fenêtre soit toujours au même endroit
2) ça permet une saisie semi automatique car il y a une Liste de choix (non modifiable) cette liste est renseignée en fonction de plusieurs critères (que je ne maîtrise pas) donc l'idéal est de lire le contenu pour faire le bon choix (avec le handle et sendmessage : je sais faire).
Peut-être ai-je mal compris ta réponse ?  

Jean-Michel

samedi 29 mars 2008 à 12:38:59 | Re : Piloter une autre application (SendMessage)

Caribensila

Membre Club
Tu peux renseigner tous tes Edits en une seule fois :

http://www.delphifr.com/codes/PRESSE-PAPIERS-CIE_28960.aspx

Reste les boutons... Mais il doit bien y avoir un moyen.



Cette discussion est classé dans : application, données, sendmessage, interface, direction


Répondre à ce message

Sujets en rapport avec ce message

Base de données sans BDE [ par John Dogget ] Bonjour à tous.J'utilise BDE pour une petit programme, le problème est que je dois livrer BDE en même temps que l'application pour qu'elle fonctionne Utilisation bases paradox et chargement données [ par orelien ] Bonjour,J'ai réalisé une application qui utilise une base de données paradox avec le bde. J'utilise le composant dbgrid et des requêtes sql pour l'ali Delphi + MySQL [ par chup ] Salut,J'ai développé une application de gestion de pronostics sous Delphi 6 avec une base de données SQL Server. Je souhaiterais savoir comment passer Chargement base de données [ par orelien ] Bonjour,J'ai réalisé une application delphi, dont la base paradox est placée sur un réseau. Le temps de chargement du programme me paraît assez long Chargement d'une application base de données [ par orelien ] Bonjour,J'ai réalisé une application comportant un composant dbgrid relié à une base paradox.Le lancement de l'application et un peu long à mon goût e Demande de conseils et orientations [ par fouroulou ] Bonjour tout le monde,Voilà j'ai un projet qui me tient à coeur et j'aimerais bien le réaliser.Ce projet consiste à réaliser une application delphi av application avec base de données [ par fouroulou ] Bonjour tout le monde,Voilà je suis un instituteur ayant des connaissances modestes en programmation.Je voudrais réaliser une application pour mon éco Controler son application via une interface web [ par sbeex ] Bonjour,Je suis débutant delphi et j'aimerais savoir comment contrôler son application via une interface web.Par exemple si je coche éteindre, l'appli Choix d'interface? [ par fouroulou ] Bonjour tout le monde,Voilà il s'agit d'une application de base de données (delphi 7 + Firebird 2), mon problème c'est que je n'arrive pas à définir u Mode Terminal en Delphi ? [ par f6dqm1 ] BonjourDans une application DELPHI, je voudrais temporairement passer en mode Terminal (comme Hyperterminal) pour envoyer des commandes à une interfac


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 3,962 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.