IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

API standards et tierces Java Discussion :

interagir avec l'api windows


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Points : 11
    Points
    11
    Par défaut interagir avec l'api windows
    Salut,
    je dois récupérer les evènements clavier et souris. cad que si je suis sous word, mon appli doit etre capable de déterminer les touches appuyés afin de reconstituer le document.
    j'ai entendu parler de hook.
    le top serait de la faire en C++ mais je préfère java.

    comment interagir avec l'api win32 en java.

    je suis ouvert à toutes propositions

    merci

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si tu veux quelque chose de semblable au java et qui manipule aisément windows je te conseille plutôt de te mettre au C#, car java n'est pas le grand potes des systèmes d'exploitations

  3. #3
    Invité
    Invité(e)
    Par défaut
    Effectivement java n'est pas doué d'énormément de possibilité a ce point de vue.
    Néanmoins moi j'utilise la classe robot.
    Et si tu veux interagir avec une autre applic, il y a moyen d'émuler les touches claviers mais il faut que l'application (word par example) ait le focus sur ton écran.

  4. #4
    Membre régulier Avatar de Vesperal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 81
    Points
    81
    Par défaut
    C'est le mauvais côté des languages portables, y'en faut bien un

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ben oui... mais est-ce que language portable signifie langage sans interaction avec l'OS ?
    Ce serait bien domage

  6. #6
    Membre régulier Avatar de Vesperal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 81
    Points
    81
    Par défaut
    Ca signifie surtout qu'il faudrait une couche "générale" entre le language et les OS possibles, ce qui n'est pas vraiment faisable (ou très difficilement, vu que les OS évoluent chaqun de leur côté en plus). D'ou la naissance de certaines API, mais qui ne règlent qu'en partie le problème puisque peu développées.

    Le language a été développé pour être portable, donc ca réduit très fortement les liens avec les différents OS. Il y a un prix à tout

    (oups, je divague du sujet je crois ... les débâts ont l'air d'aller fort en ce moment, on peut en lancer un autre si tu veux )

  7. #7
    Invité
    Invité(e)
    Par défaut
    héhé, c'est vrai que le débat précédant est assez corsé
    Mais explique-moi un truc. Pourquoi java est dit portable et n'a pas d'api (ou peu?) d'OS par rapport à C++ qui permet d'interagir avec l'OS (en tout cas windows). C++ n'est pas portable ?
    J'avais déjà posté un message il y a plus d'un an ici en demandant comment gérer le focus d'une application tourant sur windows. Je n'ai en effet jamais eu de réponse en java. Sauf d'incorporer une dll C++. Dommage.
    N'y aura-t-il jamais d'évolution dans ce domaine ?

  8. #8
    Membre régulier Avatar de Vesperal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 81
    Points
    81
    Par défaut
    C et C++ sont portables, mais dans une certaine mesure. Une fois compilé, ils ne le sont plus. Et même non compilés, contrairement au Java ou tu peux prendre ton code et le compiler sous Unix sans rien changer, tu dois modifier plusieurs choses (plus ou moins, selon ce que ton programme fait) pour pouvoir le compiler correctement. Justement à cause de la question des différents OS

    Beaucoup disent même que C et C++ ne sont PAS portables, pour simplifier. Ca n'est vrai que dans une certaine mesure.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui, mais je ne vois quand-même pas de barrière à développer une api pour communiquer au moins avec windows Unix ou mac. Même si celle-ci n'est pas fournie avec le jdk de base.

  10. #10
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    En java si tu veux exécuter sous Linux un prog que tu as compilé sous Windows, c'est possible SANS recompiler le bytecode.

    C'est un des principes de Java, à savoir un même programme s'exécute partout.

    Cependant les différents OS ont leur spécificités, certaines choses sont possible dans un OS et pas dans un autre. J'ai pas d'exemple en tête comme ça tout de suite mais c'est le cas.

    Pour satisfaire à sa philosophie, Java est obligé de se restreindre au plus petit dénominateur commun, ce qui explique que certaines choses soient impossibles en Java pur. Mais la situation s'améliore et certaines choses qui étaient impossibles avant le deviennent (exemple interagir avec la barre des tâches, ouvrir un fichier avec l'application par défaut)

    En ce qui concerne C++, celui-ci peut être portable si tu utilise des librairies disponibles dans chaque environnement (et il en existe beaucoup). Cependant en C++, à la différence de Java, tu es obligé de recompiler ton code pour l'exécuter dans un autre OS. C'est logique car les programmes C++ sont compilés en natif.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Descent
    Mais la situation s'améliore et certaines choses qui étaient impossibles avant le deviennent (exemple interagir avec la barre des tâches, ouvrir un fichier avec l'application par défaut)
    Depuis java 5 ? Qu'est-ce qui permet de faire cela ?

  12. #12
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par septentryon01
    Depuis java 5 ? Qu'est-ce qui permet de faire cela ?
    Non dans Java 6. Ils y ont intégré la librairie JDIC.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    ok la discussion est partie un peu en live.

    Citation Envoyé par septentryon01
    Effectivement java n'est pas doué d'énormément de possibilité a ce point de vue.
    Néanmoins moi j'utilise la classe robot.
    Et si tu veux interagir avec une autre applic, il y a moyen d'émuler les touches claviers mais il faut que l'application (word par example) ait le focus sur ton écran.
    je ne veux pas interagir avec une autre application mais juste savoir les touches qui sont appuyés et ce quelque soit l'application qui a le focus.

    Explique moi ta

  14. #14
    Invité
    Invité(e)
    Par défaut
    pas besoin de tuto, regarde juste la définition et les méthodes de la classe Robot. Tu peux récuperer des événements clavier, souris...
    Tu créés un batch qui tourne en background et le tour est joué.

  15. #15
    Membre actif Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Points : 227
    Points
    227
    Par défaut
    Citation Envoyé par septentryon01
    pas besoin de tuto, regarde juste la définition et les méthodes de la classe Robot. Tu peux récuperer des événements clavier, souris...
    Tu créés un batch qui tourne en background et le tour est joué.
    Faut que tu m'expliques ca! Je ne crois pas qu'il est possible d'utiliser la classe robot pour récupérer les évenements clavier. T'es obligé d'utiliser un listener ce qui implique que ta frame java doit avoir le focus non?

  16. #16
    P.B
    P.B est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ca m'intéresse aussi, car je cherche aussi à récupérer les évènements clavier à partir d'une application, mais je n'y arrive pour l'instant que lorsque mon appli java a le focus

    (J'utilise la classe Robot et j'implémente un KeyListener à ma JFrame pour cela.)

  17. #17
    Invité
    Invité(e)
    Par défaut
    Je parlais d'un batch. Donc sans gui...
    Je n'ai jamais essayer avec une application swing
    D'un autre côté, rien n'empêche un batch et un gui de communiquer ensemble...

  18. #18
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par kouadjalain
    comment interagir avec l'api win32 en java.
    La réponse: JNI. Java Native Interface
    Je l'ai déjà utilisé (en 2000, mais ça n'a absolument pas changé). Il te faut une bonne connaissance du C, de l'api win32 et des dlls pour ce qui est de l'appel du code natif de Windows. Ensuite, une connaissance moyenne de java est requise pour charger et faire appel aux fonctions que tu auras défini dans ta dll. Il y a un utilitaire dans le jdk a appeler pour générer une classe java qui contient l'interfaçage vers les méthodes exportées par la dll.
    Perso, je déconseille sauf si tu n'as vraiment pas le choix du langage: c'est pas très "orienté objet" et, fatalement, ton code ne sera pas portable (à moins que tu écrives l'équivalent de ta dll en version unix, car la partie de code en java reste la même).

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/12/2005, 11h37
  2. Tutorial d'initiation a la programmation avec l'API Windows
    Par mcdonald dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/09/2005, 17h20
  3. Stocker un imprim ecran sous bmp avec l'api windows
    Par Tofalu dans le forum Windows
    Réponses: 7
    Dernier message: 04/05/2005, 11h32
  4. Réponses: 3
    Dernier message: 09/11/2004, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo