开机自启,始终在最前面

//开机启动函数
void CCommWizardDlg::OnBnClickedCheckStart()
{
	CString   str; //添加注册表路径 

WCHAR*     CurrentPath= new WCHAR[sizeof(WCHAR)*100];//程序当前路径
HKEY   hRegKey;   //注册key
BOOL   bResult;   //打开注册表返回值
str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");//注册表   
GetModuleFileName(NULL,(LPSTR)CurrentPath,MAX_PATH); //获得运用程序路径

if ( BST_CHECKED == IsDlgButtonChecked( IDC_CHECK_START ) )
{
// 勾选
	if(bResult=RegOpenKey(HKEY_LOCAL_MACHINE,   str,   &hRegKey)   !=   ERROR_SUCCESS)//打开注册表     
{   
   //free(CurrentPath); //打开不成功就释放内存并返回
   delete[] CurrentPath;
   return;   
}   
if(bResult=::RegSetValueEx(hRegKey,_T("StarBySelf"),0,REG_SZ,   
   (const   unsigned   char   *)CurrentPath,   
   MAX_PATH)!=   ERROR_SUCCESS)   //打开成功写信息到注册表
{   //写入失败
   RegCloseKey(hRegKey);   //关闭注册表key
//   free(CurrentPath);   //释放内存资源
   delete[] CurrentPath;
   return;   //返回
}
else 
{
	//写入成功后执行释放内存
ifChecked = true;

RegCloseKey(hRegKey);   
// free(CurrentPath);
delete[] CurrentPath;
}

}


else
{
	if(bResult=RegOpenKey(HKEY_LOCAL_MACHINE,   str,   &hRegKey)   !=   ERROR_SUCCESS)//打开注册表     
{   
   //free(CurrentPath); //打开不成功就释放内存并返回
   delete[] CurrentPath;
   return;   
}   

if(!RegDeleteValue(hRegKey,_T("StarBySelf")))
   {
//    MessageBox(_T("删除注册表成功!"));
	ifChecked = false;
    RegCloseKey(hRegKey);
	delete[] CurrentPath;
   }
   else
   {
    MessageBox(_T("注册表删除失败!"));
	RegCloseKey(hRegKey);
	delete[] CurrentPath;
   }

}


}



void CCommWizardDlg::OnBnClickedCheckHead()
{
	if ( BST_CHECKED == IsDlgButtonChecked( IDC_CHECK_HEAD ) )
	{
		this-> SetWindowPos(&wndTopMost,   0,   0,   0,   0,   SWP_NOMOVE   |   SWP_NOSIZE);
	}
	else
	{
		this-> SetWindowPos(&wndNoTopMost,   0,   0,   0,   0,   SWP_NOMOVE   |   SWP_NOSIZE);
	}
}

你可能感兴趣的:(c++,MFC)