Épingler un exécutable Java (avec launch4j) à la barre des tâches Windows 7
après avoir passé une demi-journée à chercher et à essayer, j'abandonne enfin.
j'ai une application java dont je crée un jar exécutable (pour inclure tous les autres libs et juste avoir un seul fichier jar). Avec launch4j et le jar exécutable, je fais un exécutable "MyApp.EXE."
l'exécutable ist fonctionne très bien, mais je veux l'épingler à ma barre des tâches windows 7. Pour l'instant, j'ai juste la barre des tâches "Fermer la fenêtre".
Après lecture et mise en œuvre des solutions suivantes avec JNA
- Épingler une application Java pour Windows 7 barre des tâches
- utilisant JNA pour obtenir / définir l'identificateur d'application
mon Application affiche son "Application User Model ID" correctement dans l'interface graphique (juste pour le test).
mais: mon programme est affiché comme "javaw.EXE" dans le Gestionnaire des tâches et je ne peux toujours pas le coller à la barre des tâches, même si j'ai mis l'option launch4j "custom process name and XP style manifest".
Informations générales: je travaille avec un compte administrateur windows 7 et je ne veux pas que l'application nécessite des droits d'administrateur.
de toute façon, si je démarre l'application "as administrator" à partir du menu contextuel et confirme le message UAC, je peux maintenant épingler à la barre des tâches. Mais: même si j'ai défini le " modèle D'Application utilisateur ID" correctement, windows veut toujours épingler " javaw.exe", même si mon programme est maintenant montré comme " MyApp.exe dans le gestionnaire des tâches.
je suis complètement confus. Mais je ne suis évidemment pas le seul à avoir ces problèmes. = > Voir les derniers commentaires sur la réponse de Gregory Pakosz dans en utilisant JNA pour obtenir / définir l'identificateur d'application
questions finales:
- Gregory Pakosz façon avec JNA pour définir la "Demande de Modèle d'Utilisateur ID" ( ) https://stackoverflow.com/a/1928830/1128689 ) travaille pour moi. Mais quand même, windows reconnaît mon application comme une instance de "javaw.EXE." Que dois-je faire?
- est-ce que peut-être quelques Windows ou java update ont cassé quelque chose ici?
- Dois-je vraiment exécuter mon application avec des droits d'utilisateur élevés? Je ne veux vraiment pas...
- y a-t-il d'autres options dans launch4j que je dois configurer?
- dois-je utiliser un fichier manifeste dans launch4j?
4 réponses
êtes-vous à la recherche de ceci, que j'ai utilisé dans mon application pour montrer l'application Java en cours d'exécution sur windows taskbar..
SystemTray systemTray = new SystemTray(composite, parent.getShell(), parent.getDisplay(), "My Application");
systemTray.makeSystemTray();
Aucun problème avec les winrun4j , ce qui est plus récent et plus facile à utiliser que Jsmooth
la cause principale: javaw
est enregistré comme un processus hôte (dans le registre de Windows). Le comportement de raccourci est probablement causé par les suivants (source: application User Model IDs (AppUserModelIDs) )
AppUserModelIDs définis par L'Application et définis par le système
certaines applications ne déclarent pas un AppUserModelID explicite. Ils sont facultatif. Dans ce cas, le système utilise une série de l'heuristique assigner un AppUserModelID interne.
[...]
si le processus a été lancé par un raccourci qui contient le lancement arguments (généralement le contenu cible pour héberger comme l '" application"), le système peut déterminer l'identité et l'application peut être épinglé et relancé.
Sur le Processus d'Hôte de comportement:
enregistrement d'une demande en tant que Processus Hôte
une application peut définir l'entrée du registre IsHostApp pour que le processus de l'exécutable soit considéré comme un processus hôte par la barre des tâches. Cela affecte son regroupement et les entrées de liste de saut par défaut.