#include #include #include #include #include #include #include "processthread.h" #include "qdatetime.h" #include "qtsingleapplication.h" #include "updaterthread.h" void addToStartup() { QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); QString appPath = QCoreApplication::applicationFilePath(); // 获取应用程序路径 settings.setValue("BaseMainApp", appPath); // 将应用程序路径添加到注册表 } void redirectOutputToLogFile() { // 重定向 qDebug、qWarning 和 qCritical 的输出 qInstallMessageHandler([](QtMsgType type, const QMessageLogContext &context, const QString &msg) { // 获取当前日期 Q_UNUSED(context) QString dateString = QDate::currentDate().toString("yyyy-MM-dd"); // 获取应用程序的日志文件路径 QString logFileName = "./log/" + dateString + "_base.txt"; // 创建 QFile 对象 QFile logFile(logFileName); // 打开文件进行写入,如果文件不存在则创建 if (!logFile.open(QIODevice::Append | QIODevice::Text)) { qWarning() << "Unable to open log file for writing:" << logFile.errorString(); return; } QTextStream out(&logFile); QString timeString = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); switch (type) { case QtDebugMsg: out << timeString << " [DEBUG] " << msg << "\n"; break; case QtWarningMsg: out << timeString << " [WARNING] " << msg << "\n"; break; case QtCriticalMsg: out << timeString << " [CRITICAL] " << msg << "\n"; break; case QtFatalMsg: out << timeString << " [FATAL] " << msg << "\n"; // abort(); // 终止程序 case QtInfoMsg: break; } logFile.close(); }); } int main(int argc, char *argv[]) { // QApplication a(argc, argv); SharedTools::QtSingleApplication a("BaseMainApp", argc, argv); if (a.isRunning()) { a.sendMessage("", 1000); return 0; } QDir dir; dir.mkdir("log"); // 创建日志目录 addToStartup(); // 开机启动 // redirectOutputToLogFile(); // 日志 a.setApplicationVersion("0.0.2"); UpdaterThread thread; thread.start(); ProcessThread Process; Process.start(); return a.exec(); }