一、建立自啟動複選框
在一個mfc工程中建立一個複選框控件,命名為IDC_AUTOSTART。接着建立該複選框控件的控件型關聯變量,命名為m_autostart。再建立一個按鈕控件,用于點選時儲存複選框狀态。命名為IDC_BTN_SAVE,輕按兩下該按鈕控件生成函數OnBnClickedBtnSave()。
二、編寫OnBnClickedBtnSave()中代碼
OnBnClickedBtnSave()中代碼如下:
void CSystemSetDlg::OnBnClickedBtnSave()
{
HKEY hkey;
CString szRegPath = AUTOSTART_REGISTRY_PATH;//軟體自啟動路徑
//如果自啟動複選框選中
if(m_autostart.GetCheck()){
//打開啟動項
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, szRegPath, 0, KEY_ALL_ACCESS, &hkey)){
TCHAR szModule[MAX_PATH];
DWORD dwRet = GetModuleFileName(NULL, szModule, MAX_PATH);//擷取本程式的完整路徑
LONG nRet = RegSetValueEx(hkey, _T("VideoCap"), 0, REG_SZ, (LPBYTE)szModule, dwRet);
RegCloseKey(hkey);
}else{
g_ProLogger.TraceError("系統參數錯誤,不能随機啟動");
}
}else{
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, szRegPath, 0, KEY_ALL_ACCESS, &hkey)){
if(ERROR_SUCCESS != RegDeleteValue(hkey, _T("VideoCap")))
g_ProLogger.TraceError("删除系統資料庫中VideoCap失敗");
RegCloseKey(hkey);
}else{
g_ProLogger.TraceError("打開系統資料庫鍵失敗");
}
}
AfxMessageBox("儲存成功!");
OnOK();
}
代碼中用到的函數,如要深入了解請檢視MSDN。
三、測試
勾選自啟動複選框後,使用快捷鍵Win+R運作msconfig進入系統配置頁面,點選啟動,即可看到自己的啟動項目。