main.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include <QApplication>
  2. #include <QCoreApplication>
  3. #include <QDebug>
  4. #include <QDir>
  5. #include <QProcess>
  6. #include <QSettings>
  7. #include "processthread.h"
  8. #include "qdatetime.h"
  9. #include "qtsingleapplication.h"
  10. #include "updaterthread.h"
  11. void addToStartup()
  12. {
  13. QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
  14. QSettings::NativeFormat);
  15. QString appPath = QCoreApplication::applicationFilePath(); // 获取应用程序路径
  16. settings.setValue("BaseMainApp", appPath); // 将应用程序路径添加到注册表
  17. }
  18. void redirectOutputToLogFile()
  19. {
  20. // 重定向 qDebug、qWarning 和 qCritical 的输出
  21. qInstallMessageHandler([](QtMsgType type,
  22. const QMessageLogContext &context,
  23. const QString &msg) { // 获取当前日期
  24. Q_UNUSED(context)
  25. QString dateString = QDate::currentDate().toString("yyyy-MM-dd");
  26. // 获取应用程序的日志文件路径
  27. QString logFileName = "./log/" + dateString + "_base.txt";
  28. // 创建 QFile 对象
  29. QFile logFile(logFileName);
  30. // 打开文件进行写入,如果文件不存在则创建
  31. if (!logFile.open(QIODevice::Append | QIODevice::Text)) {
  32. qWarning() << "Unable to open log file for writing:" << logFile.errorString();
  33. return;
  34. }
  35. QTextStream out(&logFile);
  36. QString timeString = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
  37. switch (type) {
  38. case QtDebugMsg:
  39. out << timeString << " [DEBUG] " << msg << "\n";
  40. break;
  41. case QtWarningMsg:
  42. out << timeString << " [WARNING] " << msg << "\n";
  43. break;
  44. case QtCriticalMsg:
  45. out << timeString << " [CRITICAL] " << msg << "\n";
  46. break;
  47. case QtFatalMsg:
  48. out << timeString << " [FATAL] " << msg << "\n";
  49. // abort(); // 终止程序
  50. case QtInfoMsg:
  51. break;
  52. }
  53. logFile.close();
  54. });
  55. }
  56. int main(int argc, char *argv[])
  57. {
  58. // QApplication a(argc, argv);
  59. SharedTools::QtSingleApplication a("BaseMainApp", argc, argv);
  60. if (a.isRunning()) {
  61. a.sendMessage("", 1000);
  62. return 0;
  63. }
  64. QDir dir;
  65. dir.mkdir("log"); // 创建日志目录
  66. addToStartup(); // 开机启动
  67. // redirectOutputToLogFile(); // 日志
  68. a.setApplicationVersion("0.0.2");
  69. UpdaterThread thread;
  70. thread.start();
  71. ProcessThread Process;
  72. Process.start();
  73. return a.exec();
  74. }