要想实现程序开机自启动,主要是将应用程序添加到对应的注册表中
#define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
判断应用程序目前是否为开机自启动
bool MainWindow::isAutoRun(const QString &appPath)
{
QSettings settings(AUTO_RUN, QSettings::NativeFormat);
QFileInfo fInfo(appPath);
QString name = fInfo.baseName();
QString oldPath = settings.value(name).toString();
QString newPath = QDir::toNativeSeparators(appPath);
return (settings.contains(name) && newPath == oldPath);
}
设置/取消 应用程序自启动
void MainWindow::setProcessAutoRun(const QString &appPath,bool flag)
{
QSettings settings(AUTO_RUN, QSettings::NativeFormat);
QFileInfo fInfo(appPath);
QString name = fInfo.baseName();
QString oldPath = settings.value(name).toString();
QString newPath = QDir::toNativeSeparators(appPath);
if(flag)
{
if (oldPath != newPath)
settings.setValue(name, newPath);
}
else
settings.remove(name);
}
调用方法如下:
setProcessAutoRun(QApplication::applicationFilePath(),1);
setProcessAutoRun(QApplication::applicationFilePath(),0);
引用头文件
#include <QSettings>
#include <QFileInfo>
#include <QDir>