Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Скрыть окно консольного приложения при запуске


Автор: s1lver 21.12.2015, 13:27
Доброго времени суток!

Подскажите пожалуйста, как можно срыть окно консольного приложения при запуске? 

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

Саму программу запускаю так:

Код

    QProcess processStartOne;
    QProcess processStartTwo;

    if (processStartOne.startDetached(catalinaProcessStart) && processStartTwo.startDetached(mariaProcessStart)) {
        ui->label_2->setStyleSheet("color:rgb(85, 170, 127)");
        ui->label_2->setText(platformRunSuccess);
    } else {
        ui->label_2->setStyleSheet("color:rgb(170, 0, 0)");
        ui->label_2->setText(platformRunError);
    }


Эти, запускаемые, окна не несут никакой информативности, поэтому хотелось бы их скрыть.

Автор: borisbn 21.12.2015, 16:23
Если под Windows, то я использую ShellExecute:

Код
    ShellExecute(
        NULL,
        "open",
        путь к exe-шнику,
        параметры,
        каталог exe-шника,
        SW_HIDE   // <---
    );


Автор: math64 22.12.2015, 12:51
startDetached() - статический метод. При его использовании processStartOne и processStartTwo не нужны.
Если вместо этого использовать start(), вместо окна данные ввода/ввода будут перехватываться Вашим приложением (их можно выводить в QListView вместо консоли), то что никакого вывода не будет - не важно. Но придётся ожидать завершения процесса.

Автор: s1lver 22.6.2016, 09:05
Забыл отписаться что, что-то ShellExecute не заработал. Использовал WinExec() с опцией SW_HIDE. На первый взгляд все более или менее работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)