J'aimerais faire une application qui tourne en tache de fond (icone barre de
tache par exemple), mais qui agit lors de la pression d'une touche clavier.
Pour l'iconification (oula) en barre de tâche j'ai pas chercher encore, donc
normal que j'ai pas d'infos la dessus.
J'arrive à ce que l'appli fasse un événement quand on appuie sur une touche,
mais quand il s'agit de le faire quand la fenêtre est inactive c'est pas
évident. J'ai bien fait ma petit recherche sur le net mais sans succès...
Merci d'avance si quelqu'un à un debut de réponse.
Jerome
PS: Si quelqu'un avait un tuto sur java et le son en français et ben foutu,
je suis preneur...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
O.L.
Jerome Lepage a couché sur son écran :
Bonjour,
J'aimerais faire une application qui tourne en tache de fond (icone barre de tache par exemple), mais qui agit lors de la pression d'une touche clavier.
Pour l'iconification (oula) en barre de tâche j'ai pas chercher encore, donc normal que j'ai pas d'infos la dessus.
Tu parles bien de la systray (en bas à droite) ?
Je viens de trouver ça : http://ovh.dl.sourceforge.net/sourceforge/systray/systray4j-2.4.1-win32.zip
Je l'ai téléchargé, la démo marche nickel :)
-- Olivier Ligny Créateur web free-lance / www.cyber-tamtam.net
Jerome Lepage a couché sur son écran :
Bonjour,
J'aimerais faire une application qui tourne en tache de fond (icone barre de
tache par exemple), mais qui agit lors de la pression d'une touche clavier.
Pour l'iconification (oula) en barre de tâche j'ai pas chercher encore, donc
normal que j'ai pas d'infos la dessus.
Tu parles bien de la systray (en bas à droite) ?
Je viens de trouver ça :
http://ovh.dl.sourceforge.net/sourceforge/systray/systray4j-2.4.1-win32.zip
Je l'ai téléchargé, la démo marche nickel :)
--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net
J'aimerais faire une application qui tourne en tache de fond (icone barre de tache par exemple), mais qui agit lors de la pression d'une touche clavier.
Pour l'iconification (oula) en barre de tâche j'ai pas chercher encore, donc normal que j'ai pas d'infos la dessus.
Tu parles bien de la systray (en bas à droite) ?
Je viens de trouver ça : http://ovh.dl.sourceforge.net/sourceforge/systray/systray4j-2.4.1-win32.zip
Je l'ai téléchargé, la démo marche nickel :)
-- Olivier Ligny Créateur web free-lance / www.cyber-tamtam.net
Jerome Lepage
Tu parles bien de la systray (en bas à droite) ?
Oui pour la partie "tache de fond"
Olivier Ligny
Merci Olivier, ça à l'air cool.
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
Tu parles bien de la systray (en bas à droite) ?
Oui pour la partie "tache de fond"
Olivier Ligny
Merci Olivier, ça à l'air cool.
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement
(touche clavier) quand l'appli est en tache de found.
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
Hervé AGNOUX
Jerome Lepage wrote:
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
A ma connaissance, pratiquement par définition, les GUI modernes ne délivrent pas d'événement clavier si la fenêtre n'a pas le focus.
Il me semble que c'est néanmoins possible pour les applis natives, mais en tous les cas ce n'est pas possible en java.
Les icones systray, à ce que je peux voir, répondent à des événements souris. Et les applis java sont elles aussi capables de répondre à des événements souris, si la souris leur passe dessus, même si elles n'ont pas le focus.
Je ne vois donc que la piste JNI, à moins que tu ne puisses négocier... Quel est ton besoin à l'étape n-1 ?
-- Hervé AGNOUX http://www.diaam-informatique.com
Jerome Lepage wrote:
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement
(touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
A ma connaissance, pratiquement par définition, les GUI modernes ne
délivrent pas d'événement clavier si la fenêtre n'a pas le focus.
Il me semble que c'est néanmoins possible pour les applis natives, mais en
tous les cas ce n'est pas possible en java.
Les icones systray, à ce que je peux voir, répondent à des événements
souris. Et les applis java sont elles aussi capables de répondre à des
événements souris, si la souris leur passe dessus, même si elles n'ont pas
le focus.
Je ne vois donc que la piste JNI, à moins que tu ne puisses négocier... Quel
est ton besoin à l'étape n-1 ?
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
A ma connaissance, pratiquement par définition, les GUI modernes ne délivrent pas d'événement clavier si la fenêtre n'a pas le focus.
Il me semble que c'est néanmoins possible pour les applis natives, mais en tous les cas ce n'est pas possible en java.
Les icones systray, à ce que je peux voir, répondent à des événements souris. Et les applis java sont elles aussi capables de répondre à des événements souris, si la souris leur passe dessus, même si elles n'ont pas le focus.
Je ne vois donc que la piste JNI, à moins que tu ne puisses négocier... Quel est ton besoin à l'étape n-1 ?
-- Hervé AGNOUX http://www.diaam-informatique.com
TestMan
Bonsoir,
Hervé AGNOUX wrote:
Jerome Lepage wrote:
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées. <..>
A ma connaissance, pratiquement par définition, les GUI modernes ne délivrent pas d'événement clavier si la fenêtre n'a pas le focus.
Il me semble que c'est néanmoins possible pour les applis natives, mais en tous les cas ce n'est pas possible en java.
L'enregistrement d'une touche étant spécifique à un OS, il faut effectivement composer avec les limitations et les possibilités de chacun :(
Pour ce qui est de Win32, tu dois faire un truc du style : http://www.codeproject.com/system/nishhotkeys01.asp
En utilisant com4j https://com4j.dev.java.net/ sur la lib user32, tu coderas ça directement depuis du Java et ça devrait le faire et t'éviter les maux de têtes du JNI & C++ .... (Je ne l'ais pas testé sous com4j mais j'avais fait un truc avec JNIWrapper il y a un bail http://www.jniwrapper.com/ )
Je te conseille d'encapsuler tout ça dans un singleton ou mieux un SPI que tu pourras à loisir implémenter pour de nouvelle plateformes selon tes besoins.
Attention, faire une touche de racourcis global peut avoir des conséquences surprenantes selon les différents logiciels/pilotes/configuration installés ... on se souvient de ICQ qui avalé les racourcis utilisés dans certaines IDE Java, pas trés pratique en somme. Le mieux est de prévoir une option persistente (java.util.prefs.Preference) pour que l'utilisateur puisse le désactiver via une option.
Bon code ...
A+
TM
Bonsoir,
Hervé AGNOUX wrote:
Jerome Lepage wrote:
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement
(touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
<..>
A ma connaissance, pratiquement par définition, les GUI modernes ne
délivrent pas d'événement clavier si la fenêtre n'a pas le focus.
Il me semble que c'est néanmoins possible pour les applis natives, mais en
tous les cas ce n'est pas possible en java.
L'enregistrement d'une touche étant spécifique à un OS, il faut
effectivement composer avec les limitations et les possibilités de chacun :(
Pour ce qui est de Win32, tu dois faire un truc du style :
http://www.codeproject.com/system/nishhotkeys01.asp
En utilisant com4j https://com4j.dev.java.net/ sur la lib user32, tu
coderas ça directement depuis du Java et ça devrait le faire et t'éviter
les maux de têtes du JNI & C++ ....
(Je ne l'ais pas testé sous com4j mais j'avais fait un truc avec
JNIWrapper il y a un bail http://www.jniwrapper.com/ )
Je te conseille d'encapsuler tout ça dans un singleton ou mieux un SPI
que tu pourras à loisir implémenter pour de nouvelle plateformes selon
tes besoins.
Attention, faire une touche de racourcis global peut avoir des
conséquences surprenantes selon les différents
logiciels/pilotes/configuration installés ... on se souvient de ICQ qui
avalé les racourcis utilisés dans certaines IDE Java, pas trés
pratique en somme. Le mieux est de prévoir une option persistente
(java.util.prefs.Preference) pour que l'utilisateur puisse le désactiver
via une option.
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées. <..>
A ma connaissance, pratiquement par définition, les GUI modernes ne délivrent pas d'événement clavier si la fenêtre n'a pas le focus.
Il me semble que c'est néanmoins possible pour les applis natives, mais en tous les cas ce n'est pas possible en java.
L'enregistrement d'une touche étant spécifique à un OS, il faut effectivement composer avec les limitations et les possibilités de chacun :(
Pour ce qui est de Win32, tu dois faire un truc du style : http://www.codeproject.com/system/nishhotkeys01.asp
En utilisant com4j https://com4j.dev.java.net/ sur la lib user32, tu coderas ça directement depuis du Java et ça devrait le faire et t'éviter les maux de têtes du JNI & C++ .... (Je ne l'ais pas testé sous com4j mais j'avais fait un truc avec JNIWrapper il y a un bail http://www.jniwrapper.com/ )
Je te conseille d'encapsuler tout ça dans un singleton ou mieux un SPI que tu pourras à loisir implémenter pour de nouvelle plateformes selon tes besoins.
Attention, faire une touche de racourcis global peut avoir des conséquences surprenantes selon les différents logiciels/pilotes/configuration installés ... on se souvient de ICQ qui avalé les racourcis utilisés dans certaines IDE Java, pas trés pratique en somme. Le mieux est de prévoir une option persistente (java.util.prefs.Preference) pour que l'utilisateur puisse le désactiver via une option.
Bon code ...
A+
TM
Simon OUALID
Jerome Lepage wrote:
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
Je crois avoir lu un article qui disait qu'en poussant sa propre EventQueue, on pouvait récupérer les évènements systèmes sous forme d'objets Java.
Ca peut marcher pour des shortcuts globaux je pense (à tester en fait).
Ca donnerait ça :
public class MyEventProcessor extends EventQueue {
public MyEventProcessor() { Toolkit.getDefaultToolkit().getSystemEventQueue().push( this ); }
protected void dispatchEvent( AWTEvent e ) { // On choppe et on traite les évènements qui nous intéressent ici... if (e instanceof KeyEvent) { // etc ... } super.dispatchEvent( e ); }
}
Dis nous si ça fonctionne ! :p
Jerome Lepage wrote:
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement
(touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
Je crois avoir lu un article qui disait qu'en poussant sa propre
EventQueue, on pouvait récupérer les évènements systèmes sous forme
d'objets Java.
Ca peut marcher pour des shortcuts globaux je pense (à tester en fait).
Ca donnerait ça :
public class MyEventProcessor extends EventQueue {
public MyEventProcessor() {
Toolkit.getDefaultToolkit().getSystemEventQueue().push( this );
}
protected void dispatchEvent( AWTEvent e ) {
// On choppe et on traite les évènements qui nous intéressent ici...
if (e instanceof KeyEvent) {
// etc ...
}
super.dispatchEvent( e );
}
Par contre, j'ai beau chercher je trouve pas comment capturer un évenement (touche clavier) quand l'appli est en tache de found.
Je reste ouvert à vos idées.
Je crois avoir lu un article qui disait qu'en poussant sa propre EventQueue, on pouvait récupérer les évènements systèmes sous forme d'objets Java.
Ca peut marcher pour des shortcuts globaux je pense (à tester en fait).
Ca donnerait ça :
public class MyEventProcessor extends EventQueue {
public MyEventProcessor() { Toolkit.getDefaultToolkit().getSystemEventQueue().push( this ); }
protected void dispatchEvent( AWTEvent e ) { // On choppe et on traite les évènements qui nous intéressent ici... if (e instanceof KeyEvent) { // etc ... } super.dispatchEvent( e ); }