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