//主意openprocess函数参数的使用,,很不容易呀,经常犯错
//结束双进程函数,退出进程时使用正确的退出代码
//还要主意的一个细节,就是CFileDialog类的使用,因为它会改变当前程序的目录,使用时需要使用SetCurrentDirectory()函数将当前程序目录还原,否则出现一些异常。
void CConfigDlg::OnBnClickedPathBtn()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(true,0,0,0,_T("BMP图片格式|*.bmp||"),0,0,1);
dlg.DoModal();
m_picpath=dlg.GetPathName();
UpdateData(0);
::SetCurrentDirectory(m_curdic);
}
void CConfigDlg::OnBnClickedCloseLocked()
{
// TODO: 在此添加控件通知处理程序代码
HANDLE hProcess;
DWORD dwPidIfExist;
if (TRUE == bExistOne(_T("plck.exe"),&dwPidIfExist))
{
hProcess = OpenProcess(2035711,FALSE,dwPidIfExist);
TerminateProcess(hProcess,69);
}
else
{
MessageBox(_T("程序没有开启!!"));
}
}
//注册表操作函数,主意使用
bool CConfigDlg::SetAutoRun(bool bauto)
{
UpdateData();
HKEY hKey;
wchar_t pathname[MAX_PATH]=_T("");
wchar_t subkey[MAX_PATH]=_T("SOFTWARE//Microsoft//Windows//CurrentVersion//Run//");
::GetSystemDirectory(pathname,MAX_PATH);
wcscat(pathname,_T("//"));
wcscat(pathname,_T("plck.exe"));
if(bauto)
{
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
{
if(RegSetValueEx(hKey,_T("Locked"),NULL,REG_SZ,(BYTE*)pathname,sizeof(pathname))!=ERROR_SUCCESS)
{
return false;
}
}
}
else
{
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
{
if(RegDeleteValue(hKey,_T("Locked"))!=ERROR_SUCCESS)
{
return false;
}
}
}
return true;
}