Как использовать системный планировщик заданий в собственной программы?
Приветствую!
Пишу программу, её задача висеть в фоне и по расписанию собирать статистику, да передавать на сервер.
После обдумывания решено было отказаться от написания собственного планировщика и использовать системный.
Но тут возникли проблемы - как запускать действия, которые прописаны в планировщике как параметры программы, если программа висит в фоне? т.е. запускать ещё одну копию не вариант.
Нужно как то передать на обработку параметры уже к запущенной программе.
Как это можно наиболее правильно сделать?
P.S. т.к. программа кросcплатформенная хочется избежать костылей и сделать нативными средствами Qt.
P.P.S. не используя файлы либо сокеты, это по-моему оверкилл.
P.P.S. примерно как в Notepad++ вместо открытия копиии открывается ещё одна вкладка
У notepad запускается еще один экземпляр, который пинает (да-да, либо через сокет (что переносимо), либо через оконные сообщения) работающий экземпляр, потом закрывается.
Почему не сокеты? Это самое простое, прямое и легковесное решение - QLocalSocket.
Блокнот запускается, видит свой процесс, передаёт ему параметры и умирает.
Потому, что программа состоит из модулей и модули должны иметь возможность так же обрабатывать параметры. А через сокеты получиться только одному. Впринципе сделать передачу от главной программы в модули небольшая проблема...
Первое, что пришло в голову:
1. Планировщик запускает программу с параметрами
2. Та проверяет есть ли уже запущенная копия программы и если есть - передаёт ей параметры любым удобным/кросплатформенным способом и завершает работу. Сами параметры уже обрабатывает запущенная ранее копия программы
Блин, как всегда решение находится, как только задаёшь вопрос.
Попробую использовать QSharedMemory а потом попробую QDBusMessage
Без запуска копии всё равно не получится =(