Russian Qt Forum

Qt => Вопросы новичков => Тема начата: eXeLe от Октябрь 03, 2013, 14:10



Название: Не работает программа при запуске через Task Scheduler
Отправлено: eXeLe от Октябрь 03, 2013, 14:10
Написал небольшое консольное приложение для отправки письма по почте с данными из конфиг-файла.
За основу работы с SMTP взял данный проект: https://github.com/nicholassmith/Qt-SMTP
Ранее его же успешно использовал в другом своем проекте.
Далее возникла проблема - при ручном запуске программы все происходит без каких-либо проблем.
Создаю в винде в Task Scheduler новое событие с вызовом этой же программки, но при запуске она вылетает с ошибкой:
"Unhandled exception at 0x688e1cdd in MailSender.exe: 0xC0000005: Access violation reading location 0x00000000."
Никаких дополнительных аргументов программе не передается.
В чем может быть проблема?


Название: Re: Не работает программа при запуске через Task Scheduler
Отправлено: eXeLe от Октябрь 03, 2013, 14:25
Удалось понять косяк - увидел, что в консольном окошке, которое проскакивает при запуске из Щуделера - нет данных из конфига.
Перепроверил, если убрать конфиг - программа вылетает аналогичным образом.
Забил путь к конфигу в программе жестко, но решение это ужасное конечно.
Как можно сделать, чтоб считывание конфига было тем же:
    QSettings settings(QString("config.ini"), QSettings::IniFormat);
Но при этом не возникало ошибок при подобном запуске программы из щедулера?


Название: Re: Не работает программа при запуске через Task Scheduler
Отправлено: LisandreL от Октябрь 03, 2013, 14:55
Задать в шедулере рабочую папку не пробовали?  ;D

Как можно сделать, чтоб считывание конфига было тем же:
    QSettings settings(QString("config.ini"), QSettings::IniFormat);
config.ini рядом с исполняемым файлом лежит?
Тогда так:
Код
C++ (Qt)
QSettings settings(QCoreApplication::applicationDirPath() + QDir::separator() + "config.ini", QSettings::IniFormat);


Название: Re: Не работает программа при запуске через Task Scheduler
Отправлено: eXeLe от Октябрь 03, 2013, 15:14
Задать в шедулере рабочую папку не пробовали?  ;D
это, как я понимаю, опция "Start in"? Как то даже не обратил на нее внимания, никогда ее не использовал там =)

config.ini рядом с исполняемым файлом лежит?
Тогда так:
Код
C++ (Qt)
QSettings settings(QCoreApplication::applicationDirPath() + QDir::separator() + "config.ini", QSettings::IniFormat);
угу, работает, спасибо!