Подтвердить что ты не робот

Привязка исполняемого файла Java (с помощью start4j) к панели задач Windows 7

Проведя полдня в поисках и попытке, я, наконец, сдаюсь.

У меня есть приложение java, из которого я создаю runnable jar (чтобы включить любые другие библиотеки и просто иметь один файл jar). С launch4j и runnable jar я делаю исполняемый файл "MyApp.exe".

Исполняемый файл работает нормально, но я хочу привязать его к панели задач Windows 7. На данный момент у меня есть запись в панели задач "Закрыть окно".

После прочтения и реализации следующих решений с JNA

мое приложение правильно отображает "Идентификатор модели пользователя приложения" в gui (только для целей тестирования).

НО: моя программа отображается как "javaw.exe" в диспетчере задач, и я все еще не могу ее привязать к панели задач, даже если я установил параметр запуска4j "пользовательское имя процесса и манифест стиля XP".

Фоновая информация: я работаю с учетной записью администратора Windows 7, и я не хочу, чтобы приложение требовало прав администратора.

В любом случае, если я запустил приложение "как администратор" из контекстного меню и подтвердил сообщение UAC, теперь я могу привязать его к панели задач. НО: хотя я правильно установил "Идентификатор модели приложения", окна все еще хотят вывести "javaw.exe" , хотя моя программа теперь отображается как "MyApp.exe" в TaskManager.

Я смущен. Но я, очевидно, не единственный, у меня есть эти проблемы. = > См. Последние комментарии к Gregory Pakosz answer in Использование JNA для получения/установки идентификатора приложения

Заключительные вопросы:

  • Gregory Pakosz с JNA для установки "Идентификатора модели пользователя приложения" (qaru.site/info/155042/...) работает для меня. Но все же окна распознают мое приложение как экземпляр "javaw.exe" . Что еще мне нужно сделать?
  • Возможно, некоторые окна или java-обновления нарушают что-то здесь?
  • Нужно ли мне запускать мое приложение с повышенными правами пользователя? Я действительно не хочу...
  • Есть ли еще несколько вариантов в launch4j, которые я должен установить?
  • Должен ли я использовать файл манифеста в launch4j?
4b9b3361

Ответ 1

Я получил эту работу, создав Exe из runnable jar с помощью JSmooth . Настроил его на панель задач и без проблем запускал его.

Надеюсь, что это поможет

Ответ 2

Вы ищете это, которое я использовал в своем приложении, чтобы показать запущенное приложение Java на панели задач Windows.

SystemTray systemTray = new SystemTray(composite, parent.getShell(), parent.getDisplay(), "My Application");
systemTray.makeSystemTray();

Ответ 3

Нет проблем с winrun4j, который является более новым и более простым в использовании, чем Jsmooth

Ответ 4

Основная причина: javaw зарегистрирована как хост-процесс (в реестре Windows). Поведение ярлыка, вероятно, вызвано следующим (источник: Идентификаторы модели пользователей приложения (AppUserModelIDs))

Определенные приложением и системные идентификаторы AppUserModelIDs

Некоторые приложения не объявляют явный AppUserModelID. Они есть необязательный. В этом случае система использует серию эвристик для назначьте внутренний AppUserModelID.

[...]

если процесс был запущен с помощью ярлыка, содержащего запуск аргументы (обычно целевой контент для размещения как "приложение" ), система может определить личность, и приложение может быть закреплено и перезапущены.

О поведении хост-процесса:

Регистрация приложения в качестве хост-процесса

Приложение может устанавливать запись реестра IsHostApp, чтобы заставить исполняемый процесс быть рассмотренный хостом на панели задач. Это влияет на его группировку и записи списка переходов по умолчанию.