Всё круто, в Виндах кодян работает.
Но вот тут недавно забавная вещь приключилась - моя программа через QProcess
запускает другую программу (тоже мою, я сам её писал). Так вот, если главная программа
стартовала с ОС, то вторую программу она не можут запустить. А если главную программу
запускать ручками, то вторая запускается за милую душу.
Чё ж делать?
Если программа запускается со стартом ОС, мне нужно, чтобы она могла запустить другую.
Помогите, у кого какие идеи есть!..
Вот мой кодян:
// это конструстор
Tray::Tray()
{
WhereAmI = QCoreApplication::applicationDirPath(); // узнаём, в какой папке находится программа
// переменная WhereAmI объявлена в h-файле (тип - QString)
...
connect( &processBOB, SIGNAL(error(QProcess::ProcessError)), this, SLOT(error(QProcess::ProcessError)) );
// error - моя функция, описана ниже
...
execBOB( true ); // моя функция, описана ниже
}
// это функция execBOB();
void Tray::execBOB(bool args)
{
QString st = "";
if ( args ) st = "-r";
processBOB.start( WhereAmI + "/programs/Base_of_Birthdays" + getSuffix(), QStringList() << st );
// если args == true, передаём аргумент -r
// если false, передаём пустую строку параметров (т.е., не передаём параметры)
}
// это функция error(), которая вызывается, когда processBOB даёт сбои
void Tray::error(QProcess::ProcessError error)
{
QString ErrorText = "";
switch (error)
{
case QProcess::FailedToStart : ErrorText = "Failed to start"; break;
case QProcess::Crashed : ErrorText = "Crached"; break;
case QProcess::Timedout : ErrorText = "Timedout"; break;
case QProcess::WriteError : ErrorText = "Write error"; break;
case QProcess::ReadError : ErrorText = "Read error"; break;
default /* UnknownError */ : ErrorText = "Unknown error"; break;
}
trayIcon->showMessage("Error", ErrorText, QSystemTrayIcon::Critical, 3000);
}
Так вот, у меня, если программа стартует с ОС, появляется ошибка "Crached"
А если запускать ручками, всё работает отлично
Помогите! Это моя ВКР, её уже сдавать давно пора!.. =)