Java запускает процесс только в фоновом режиме - PullRequest
3 голосов
/ 25 мая 2011

Прямо сейчас у меня есть кадр в полноэкранном монопольном режиме, который управляет всем экраном. На панели есть кнопка, запускающая программу калькулятора Windows (только для целей тестирования). Возможно ли, чтобы этот процесс запускался полностью в фоновом режиме? Прямо сейчас у меня есть это:

    this.parent.setAlwaysOnTop(true);
    try {
    Process p = Runtime.getRuntime().exec("calc");
    } catch (IOException e1) {
    ErrorDialog error = new ErrorDialog("Error handling your shell action");
    e1.printStackTrace();
    System.exit(0);
    }
    this.parent.setAlwaysOnTop(false);

Это делает то, что мне нужно, но не делает это красиво. Сначала он «минимизирует» мое окно, затем запускает calc и затем максимизирует мое окно. Все это происходит быстро, но вещи вспыхивают повсюду. Можно ли заставить "calc" работать в фоновом режиме, не касаясь моего главного окна и не делая его полностью бесшовным?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Это, в принципе, специфическая вещь для оконного менеджера, по крайней мере, в системах X (таких как Linux и большинство других Unixes с графическим интерфейсом).

Некоторые оконные менеджеры запускают новые программы всегда в фоновом режиме, всегда впередний план, или даже потребовать от пользователя нарисовать область окна с помощью мыши.Другие уважают пожелания запускаемой программы.

Таким образом, вы можете взглянуть на параметры командной строки запускаемой вами программы, возможно, у них есть опция типа «start minimized» или аналогичная.

Если вы используете KDE (и оконный менеджер KDE), вы можете использовать kstart --onbottom ... или kstart --minimize ... для запуска вашей программы, которая поместит окно в нижнюю часть стека или запустит его свернутым.(Посмотрите параметры kstart, вы также можете использовать --window или --windowclass для обозначения окна.)

1 голос
/ 25 мая 2011

Протестируйте его в Linux, возможно, он не мерцает там. Если не многие люди будут использовать его в Windows, мерцание не должно быть большой проблемой.

Я не думаю, что есть специфичный для Java способ справиться с этим, вы запускаете внешний процесс. Как он запускается, зависит от ОС.

...