qt 开机启动
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
只回答业务咨询
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
1.修改注册表开机启动 void Utils::setBootEnable(const QString& runPath, bool isMin) { QString sApp=runPath; sApp.replace("/","\"); QSettings *settings = new QSettings("HKEY_LOCAL_MACHINE", QSettings::NativeFormat); if(settings) { QString value; value = settings->value("SOFTWARE/Microsoft/Windows/CurrentVersion/Run/QtJobrecord").toString(); if(value!=sApp) { if (isMin) { sApp += " -min"; } settings->setValue("SOFTWARE/Microsoft/Windows/CurrentVersion/Run/QtJobrecord", QVariant(sApp)); } } delete settings; } 2.快捷方式 启动栏 启动 {基本原理是创建一个快捷方式到程序->启动目录下,这里并没有用注册表方式(编译器为msvc2008)头文件包含} #ifdef Q_WS_WIN #include <windows.h> #include <shlobj.h> #endif 在.pro中加入下面库链接 win32:LIBS += -lshell32 -lole32 -luser32 // 获取程序启动快捷方式 QString GetStartUpPath()//{{{ { QString strPath; #ifdef Q_WS_WIN LPITEMIDLIST pidl; LPMALLOC pShellMalloc; wchar_t szDir[1024]; if (SUCCEEDED(SHGetMalloc(&pShellMalloc))) { if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_STARTUP, &pidl))) { if (SHGetPathFromIDList(pidl, szDir)) { strPath = QString::fromWCharArray(szDir) + "\MyApp.lnk"; } pShellMalloc->Free(pidl); } pShellMalloc->Release(); } #endif return strPath; }//}}} // 设置是否自动运行 void setAutoRunStatus(bool bAutoRun)//{{{ { QString strExe = QApplication::applicationFilePath(); QString strLink = GetStartUpPath(); if (bAutoRun) { #ifdef Q_WS_WIN HRESULT hr = CoInitialize(NULL); if (SUCCEEDED(hr)) { IShellLink *pisl; hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pisl); if (SUCCEEDED(hr)) { IPersistFile* pIPF; //这里是我们要创建快捷方式的原始文件地址 pisl->SetPath(strExe.toStdWString().c_str()); hr = pisl->QueryInterface(IID_IPersistFile, (void**)&pIPF); if (SUCCEEDED(hr)) { //这里是我们要创建快捷方式的目标地址 pIPF->Save(strLink.toStdWString().c_str(), FALSE); pIPF->Release(); } pisl->Release(); } CoUninitialize(); } #endif } else { QFile::remove(strLink); } }//}}} // 获取自动运行状态 bool getAutoRunStatus()//{{{ { QString strLink = GetStartUpPath(); bool bAutoRun = QFile::exists(strLink); return bAutoRun; }//}}} |
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=274