QT 代码片段
obsidian link
# 开机自启动
# 宏定义
#define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
```
### 设置自启动和关闭自启动
```cpp
void PopupClock::SetAutoStart(bool flag) {
QSettings settings(AUTO_RUN, QSettings::NativeFormat);
//以程序名称作为注册表中的键,根据键获取对应的值(程序路径)
QFileInfo fInfo(QApplication::applicationFilePath());
QString name = fInfo.baseName(); //键-名称
//如果注册表中的路径和当前程序路径不一样,则表示没有设置自启动或本自启动程序已经更换了路径
QString oldPath = settings.value(name).toString(); //获取目前的值-绝对路经
QString newPath = QDir::toNativeSeparators(QApplication::applicationFilePath()); //toNativeSeparators函数将"/"替换为"\"
if (flag)
{
if (oldPath != newPath)
settings.setValue(name, newPath);
}
else {
settings.remove(name);
}
m_pActionAutoStart->setChecked(checkAutoStart());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 检查是否有自启动
bool PopupClock::checkAutoStart() {
QSettings settings(AUTO_RUN, QSettings::NativeFormat);
QFileInfo fInfo(QApplication::applicationFilePath());
QString name = fInfo.baseName();
QString oldPath = settings.value(name).toString();
QString newPath = QDir::toNativeSeparators(QApplication::applicationFilePath());
return (settings.contains(name) && newPath == oldPath);
}
```
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
编辑 (opens new window)
上次更新: 2024/05/09, 12:51:17