Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Gestion Souris accessible pour l'ensemble des applications en cours d'exécution sur un PC
    Bonjour,

    J'ai un PC connecté au travers d'un réseau à 3 systèmes d'information distincts. Mon objectif est de synchroniser la mise à jour de ces 3 systèmes d'informations. Je souhaite développer une application sous JAVA qui me permette de faire, au lieu de la faire manuellement, des copier/coller d'une application à l'autre. Ce dont j'ai besoin c'est d'une fonction JAVA qui me permette (1) d'activer l'une de ces applications en mémoire, (2) de positionner la souris sur un champ, (3) de faire un copier , (4) d'activer la seconde application, (5) positionner sur le champ à mettre à jour et (6) de faire un coller.

    Ma difficulté est que je ne sais pas comment faire sortir ma souris de la fenêtre JAVA pour pointer les deux champs avec une commande de la souris.

    Je ne sais pas si c'est difficile à faire, mais ce serait sympa si quelqu'un pouvait me donner un exemple.
    Merci d'avance pour votre aide. Pierre

  2. #2
    Modérateur

    Salut,

    Java en standard gère sa propre UI : on est pas censé pouvoir interférer avec les autres applications, quelles soient en Java ou pas. Ce n'est pas le même système et on y a pas accès de toute manière. Maintenant, il y a différentes possibilités :
    • on peut piloter le pointeur de souris et simuler un clic, n'importe où à l'écran (voir la classe java.awt.Robot). On peut simuler le clavier. Donc, si tes fenêtres sont à un endroit prévisible, avec un scénario prévisible, tu peux programmer une sorte de macro qui fait ce que tu veux faire. A noter, qu'il existe des logiciels qui permettent de le faire et qu'il n'y a rien à programmer (juste à faire une fois le scénario à répéter).
    • en pur Java, le problème c'est qu'on ne peut écouter d'évenement provenant d'UI extérieur de l'application (pour une application Java, avec le même type d'UI (donc Swing des 2 côtés), on pourrait faire quelque chose, mais pour une application non Java non), encore moins accèder aux composants et à leur conteu. Sous Windows, en utilisant l'API JNA et les DLL de Windows, on peut réussir à introspecter l'UI et à récupérer des choses (comme la valeur saisie dans un champ) ou déterminer l'emplacement d'un champ particulier précisemment est faisable. C'est beaucoup de boulot (de programmation, mais aussi d'analyse).
    • Pär activer une application en mémoire, je suppose que tu parles de l'exécuter. Ça, on peut le faire, avec la classe ProcessBuilder. L'arrêter sera plus compliqué.


    Plutôt que d'essayer de simuler les manipulations à la main, tes systèmes d'informations ne disposent-ils pas d'API, qui te permettrait d'automatiser tes transferts, sans bidouille, de façon sure, sans accaparer l'affichage et l'UI (sache que pendant que l'application simulera ton copier/coller, tu ne pourras rien faire sur ton PC, ou plutôt si, mais faudra pas, parce que ça va faire n'importe quoi - sans parler de ce qui pourrait se passer de façon inopinée qui viendrait foutre le dawa aussi, comme une notification de mail par exemple) ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.