Hello,终于跟大家见面了,今天跟大家分享一个程序自启动的例子。
设置程序自启动有很多方法,其中一种便是设置注册表,当然可以手动为程序设置,但是如果是不懂电脑的客户,设置起来就会很不方便。所以今天小豆君就跟大家分享下如何使用Qt来实现程序自启动。
本次的例子是Win10系统,其它的系统都比较类似。
1 自启动程序的注册表设置方法
设置自启动的注册表路径为:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
然后在路径下增加一个键值对,如:
键(名称列)用来区别不同的注册表项,值(数据列)用来指定自启动程序的路径。
2 使用QSettings设置注册表项
QSettings有很多很强大的接口,其中一个就是可以对注册表项进行增删改查,所以我们就用它来操作注册表。
直接上代码:
#include <QDir> #include <QSettings> //设置程序自启动 appPath程序路径 void SetProcessAutoRunSelf(const QString &appPath) { //注册表路径需要使用双反斜杠,如果是32位系统,要使用QSettings::Registry32Format QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::Registry64Format); //以程序名称作为注册表中的键 //根据键获取对应的值(程序路径) QFileInfo fInfo(appPath); QString name = fInfo.baseName(); QString path = settings.value(name).toString(); //如果注册表中的路径和当前程序路径不一样, //则表示没有设置自启动或自启动程序已经更换了路径 //toNativeSeparators的意思是将"/"替换为"\" QString newPath = QDir::toNativeSeparators(appPath); if (path != newPath) { settings.setValue(name, newPath); } }
其次,再在main函数中调用:
int main(int argc, char *argv[]) { QApplication a(argc, argv); SetProcessAutoRunSelf(qApp->applicationFilePath()); QWidget w; w.show(); return a.exec(); }
然后,使用windeployqt命令发布程序,打开exe,并且注册表中已经新增了启动项。
最后,重新启动程序,程序自启动成功,自此大功告成。
好了,这次的分享就到这里,我们下次再见,最后不要忘记点赞和分享哦。
欢迎关注微信公众号-小豆君Qt分享
如果您觉得不错,请帮忙点赞转发,您的每一次支持,都是对原创,开源最大的鼓励!