| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include <QApplication>
- #include <QCoreApplication>
- #include <QDebug>
- #include <QDir>
- #include <QProcess>
- #include <QSettings>
- #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();
- }
|