一、设置开机自启动
windows下qt中设置程序开机自启动的原理:将启动路径写入注册表,这里用到QSetting来实现注册表的写入
代码如下
QString appName = QApplication::applicationName();//程序名称
QString appPath = QApplication::applicationFilePath();// 程序路径
QString appDir = QApplication::applicationDirPath();
qDebug() << appDir;
appDir.replace("/","\\");
appPath = appPath.replace("/","\\");
QSettings *reg=new QSettings(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
QSettings::NativeFormat);
QString val = reg->value(appName).toString();// 如果此键不存在,则返回的是空字符串
if(val != appPath)
reg->setValue(appName,appDir+"\\auto.bat");// 如果移除的话,reg->remove(applicationName);
reg->deleteLater();
二、自启动崩溃问题
本以为写好注册表,开机自启动便完成了。万万没想到,重启电脑,Duang~
程序崩溃了,查看详细信息后发现启动时找不到qWidget的dll;
由此一想,应该是dll路径没找到的问题,于是乎想到了一个解决办法:
利用bat先进入到当前目录,启动程序;然后将注册表中的启动路径修改为bat路径;
代码如下:
reg->setValue(appName,appDir+"\\auto.bat");
接下来就是编写bat,利用cd /d %~dp0进入bat当前目录
@echo off
cd /d %~dp0
start "" "GxSuspensionWindow.exe"
exit
这里尤其注意要使用@echo off start exit ;目的是将bat开启的cmd窗口给关闭