(轉自: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");
}
}
}