2011-01-12 3 views
2

Я работаю над Java-приложением, которое должно запускать другое приложение. Если я запускаю второе приложение, используя Runtime.getRuntime().exec(), он становится активным процессом, и его окно появляется перед окном моего приложения. То, что я действительно хочу сделать, - запустить процесс в «скрытом» режиме, чтобы его заголовок панели задач не появлялся, и его окно изначально было невидимым или позади моего окна приложения. Тогда мое приложение сделает его видимым или переместит его на передний план, когда оно будет хорошим и готовым. Возможно ли это, или я слишком много прошу?Скрытие оконного приложения, запущенного приложением Java?

Это для демонстрации. Поэтому я не беспокоюсь о проблемах безопасности.

Редактировать: Ответ Даниила дал мне представление. Что делать, если я использую Powershell для вызова приложения вместо CMD.EXE? Позволит ли я запустить приложение без окна, а затем вернуть окно? Я буду использовать для запуска java для запуска PowerShell для запуска приложения, но что за черт!

+1

Почему бы не запустить это внешнее приложение, когда ваше приложение «хорошее и готовое»? Нужно ли действительно запускать внешнее приложение заранее? Загрузка занимает много времени? – Bernard

+0

Ну, внешнее приложение занимает чертовски время для загрузки. Он в основном должен подключиться к серверу через www, чтобы получить некоторую информацию, согласовать рукопожатие и т. Д. Я не могу позволить моему приложению ждать всего этого. Поэтому я хочу запустить его как можно скорее и продолжить выполнение других задач. – 341008

ответ

0

Вы не говорите, что это за другое приложение, но я предполагаю, что это то, что у вас нет контроля (т. Е. Вы не можете дать ему параметр для запуска в минимизированном режиме или аналогичном.) Вместо того, чтобы скрыть приложение, которое вы запускаете, можете ли вы просто использовать метод toFront() в своем окне после запуска другого приложения, чтобы открыть окно перед другим? А затем свернуть окно, когда вы хотите открыть другой?

Я первый, кто признал, что это немного уместное решение, но оно может работать в зависимости от того, что вы после.

+0

Вы не знаете, сколько времени потребуется, чтобы другое окно стало видимым ... – Daniel

+0

Мне нравится идея. И я подозреваю, что этого не будет. Но здесь второе окно на какое-то время выйдет на фронт. Кроме того, как говорит Даниэль, я не знаю, сколько времени понадобится, чтобы появиться. – 341008

0

Вы не можете предоставить эти параметры, но вы можете использовать команду «начать» (попробуйте в cmd), которая поддерживает эти параметры. В конце концов вам придется называть его оболочкой cmd.exe, но это сработает!

+0

Я отлично справляюсь с вызовом оболочки cmd, но если я использую «start», я не смогу активировать окно позже. Будет ли я? – 341008

+0

Как вы это сделаете, если используете Runtime.getRuntime(). Exec()? Это можно сделать только путем отправки сообщений Window, которые, к сожалению, зависят от платформы. Но JNative - хороший инструмент для этого. Вы должны использовать Windows API, чтобы найти окно и перенести его на передний план. – Daniel

+0

«Как вы это сделаете, если используете Runtime.getRuntime(). Exec()?»: Я не могу. Это вторая часть моей проблемы. – 341008

Смежные вопросы