Qt非GUI程序在Windows 11系统启动时未启动

eblbsuwk  于 2023-03-24  发布在  Windows
关注(0)|答案(1)|浏览(247)

我用Qt 6.4 for Windows写了一个程序。我运行的是Windows 11。该程序是一个非GUI程序(没有QWidgets等)。它会产生线程来倒计时,倒计时后它会播放一个音频文件。该程序会在一个名为log.txt的文件中生成日志,并将日志保存在工作文件夹中(.exe文件所在的文件夹)。
下面是main()函数:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTranslator translator;
    const QStringList uiLanguages = QLocale::system().uiLanguages();
    for (const QString &locale : uiLanguages) {
        const QString baseName = "PeriodicSoundMaker_" + QLocale(locale).name();
        if (translator.load(":/i18n/" + baseName)) {
            a.installTranslator(&translator);
            break;
        }
    }
    AudioManager();

    return a.exec();
}

当我双击.exe文件时,我可以看到它在任务管理器中运行,我可以看到它产生日志并按预期倒数后播放音频文件。
我想在Windows启动时运行此程序,在任何用户登录之前,在登录屏幕上。我利用任务计划程序创建一个任务,这将在Windows启动时启动程序。
为了测试,我重新启动Windows并在登录屏幕上等待。倒计时后没有播放音频文件。
然后我登录到Windows,打开任务管理器,发现.exe文件正在运行。我也从任务计划程序中检查了同样的文件,发现任务正在运行。但是,我没有看到log.txt文件中产生任何日志。如果程序启动,总会有一些日志。
这种不同行为背后的原因是什么?我可以做些什么来在Windows系统启动时运行程序?

sczxawaw

sczxawaw1#

我找到了解决办法。指定Action时,Start in (optional)必须是.exe文件所在的文件夹。文件夹路径不能有任何双引号(“),即使路径中有空格。
例如,如果程序位于E:\My Programs\A B C\a.exe,那么Start in (optional)应该是E:\My Programs\A B C\,不带任何引号。

相关问题