Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 12:08   #1
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
Вопрос Проверка запущенного процесса

Ещё раз привет всем!

Задача следующая
При запуске программы выполнять проверку
- Если процесс с данным именем уже запущен, показывать предупреждение, и завершать выполнение программы
- Если процес не запущен - продолжать выполнение

Пробовал реализовывать посредством сигналов...
В документации к QProcess написано следующее:
Цитата:
void QProcess::start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite )

Starts the given program in a new process, if none is already running, passing the command line arguments in arguments. The OpenMode is set to mode.

The QProcess object will immediately enter the Starting state. If the process starts successfully, QProcess will emit started(); otherwise, error() will be emitted. If the QProcess object is already running a process, a warning may be printed at the console, and the existing process will continue running.

Note: Processes are started asynchronously, which means the started() and error() signals may be delayed. Call waitForStarted() to make sure the process has started (or has failed to start) and those signals have been emitted.
Код:
Process::Process() {
    connect(&m_process, SIGNAL(started()),
            this,       SLOT(started())
            );

    connect(&m_process, SIGNAL(error(QProcess::ProcessError)),
            this,       SLOT(error(QProcess::ProcessError))
            );
}

Process::~Process() {

}

void Process::start() {
    m_process.start("ExeText.exe");
    if (!m_process.waitForFinished()) {
        QMessageBox::warning(0, "Error", "Error");
    } else {
        QMessageBox::information(0, "Success", "Success");
    }
}

void Process::started() {
    //QMessageBox::information(0, "Success", "Success");
}

void Process::error(QProcess::ProcessError error) {
    //QMessageBox::warning(0, "Error", "Error");
}
Но это не помогает
Ещё написано про состояние процесса...
Цитата:
When the process exits, QProcess reenters the NotRunning state (the initial state), and emits finished().
Но я это не пробовал...

Что посоветуете, как можно решить эту проблему?
Буду благодарен за любой совет!
Lindemann66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хэндл запущенного процесса sashaxD Win Api 8 10.09.2011 23:16
Отслеживание пакетов процесса запущенного из моей программы Crystallon Общие вопросы Delphi 2 20.01.2011 23:51
Проверка значений процесса. Неработает код. Человек_Борща Общие вопросы Delphi 1 07.01.2011 23:07
Запуск процесса в потоке, завершение процесса в указааноое время, Дайте совет Человек_Борща Общие вопросы Delphi 3 29.08.2010 12:58
Работа с памятью запущенного процесса DeniCPP Общие вопросы C/C++ 2 09.04.2009 12:38