1、开机自启
开机自启动使用Qt的QSettings写注册表:
#define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
//参数1:注册表位置
//参数2:NativeFormat(注册表模式);IniFormat(ini文件模式)
QSettings *settings = new QSettings(AUTO_RUN,QSetting::NativeFormat);
//注意“min”前面的空格,没有空格的话系统没办法区分两个参数。
QString para = 应用程序完整路径 + " min";
settings->setValue(应用程序名称, 应用程序完整路径);
好,这样开机自启动的注册表就写进去了。
另外我之前因为一些不确定的问题,debug一直没有办法自启,release才可以。不知道其他人有木有这个问题。
2、判断参数是否要最小化
根据启动时的参数判断:
如果是自启动,有第二参数。
如果是双击exe启动,没有第二参数。
int main(int argc, char *argv[])
{
QApplication a( argc, argv );
CMainWidget *w;
w.show();
//获取命令行参数,判断是否是【开机自启动】,如果是,最小化。
QStringList arguments = QCoreApplication::arguments();
//以第一个参数是程序路径,第二个参数才是min,所以我们取第二个参数。
if(arguments.size() > 1)
{
QString para2 = arguments.at(1);
if(para2 == "min")
{
if(w.isVisible())
{
w.showMinimized();
//如果做了右下角的托盘,最小化之后可以隐藏掉。
w.hide();
}
}
}
ret = a.exec();
}