您的位置:首页 > 编程语言 > Qt开发

设置Qt程序在Windows开机后自动运行

2014-05-08 18:01 926 查看
(转自:http://blog.csdn.net/weiren2006/article/details/7443362)

主要原理是修改Windows的注册表来实现的,Qt的QSettings提供了访问ini,注册表的功能

//读取注册表的信息,让程序自启动
voidMainWindow::Readregedit(bool isAutoRun)
{
QSettings*reg=newQSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",QSettings::NativeFormat);
//开机自动运行
if(isAutoRun)
{
         reg->setValue("app",QApplication::applicationFilePath());
}
else
{
      reg->setValue("app","");
}
}

//开机自启动,主窗体隐藏
if(argc>1&&(argv[1]==(char*)"//min"))
{
  w.hide();
}
else
{
  w.showNormal();
}



PS:开机启动的时候,小托盘图标有可能不能显示出来,可以利用资源文件里面的图标,

作为小托盘,这样就可以解决这个问题。

让软件在系统启动时自动运行,可通过修改注册表实现。

在\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加需启动的程序路径,代码如下:

voidautoStart(boolflag)

{

//写入注册表,开机自启动

HKEYhKey;

//找到系统的启动项

LPCTSTRlpRun=(wchar_t*)QString("Software\\Microsoft\\Windows\\CurrentVersion\\Run").utf16();

//打开启动项Key

longlRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpRun,0,KEY_WRITE,&hKey);

if(lRet==ERROR_SUCCESS)

{

DWORDdwRet=QApplication::applicationFilePath().length()*2;

//添加一个子Key,并设置值

if(flag==true)

{

lRet=RegSetValueEx(hKey,(WCHAR*)QString("test").utf16(),0,REG_SZ,

(BYTE*)QApplication::applicationFilePath().utf16(),dwRet);

}

else

{

lRet=RegSetValueEx(hKey,(WCHAR*)QString("test").utf16(),0,REG_SZ,

(BYTE*)"",dwRet);

}

//关闭注册表

RegCloseKey(hKey);

if(lRet!=ERROR_SUCCESS)

{

qDebug("error");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: