bool CMyProductOptionWnd::DeleteExe()
{
char pFileName[MAX_PATH];
int nPos = GetCurrentDirectory( MAX_PATH, pFileName);
CString strSaveDir;(pFileName);
if( nPos < 0 ){
AfxMessageBox(L"获取当前路径失败,请重试。");
ExitProcess(0);
}
CString strDelExe=strSaveDir+L"\\1.exe";
CString strmDelExe=L"1.exe";
if(TRUE==SetCurrentDirectory(strSaveDir))
{
CFileFind finder;
BOOL bol=finder.FindFile(strDelExe);
if(TRUE==bol)
{
DWORD procID=this->GetProcessIdFromName(strmDelExe,strSaveDir);//获取进程ID
if(procID>0)
{
HANDLE handle=OpenProcess(PROCESS_TERMINATE,FALSE,procID);
BOOL ret=TerminateProcess(handle,4);//这里必须是4 否则无法结束进程
if(0==ret)
{
AfxMessageBox(L"未结束指定的进程");
return 0;
}
}
DeleteFileW(strDelExe);
}else
{
AfxMessageBox(L"获取相关可执行文件失败,请检查文件是否存在¨);
return 0;
}
}else
{
AfxMessageBox(L"获取相关可执行文件失败,请检查文件夹是否存在");
}
return false;
}
// 根据名称获取进程ID
DWORD CMyProductOptionWnd::GetProcessIdFromName(CString processName, CString processPath)
{
PROCESSENTRY32 pe;
MODULEENTRY32 me;
DWORD id=0;
HANDLE mehandle;
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize=sizeof(PROCESSENTRY32);
BOOL ret=Process32First( hSnapshot,&pe);
if(!ret)
return 0;
while(1)
{
pe.dwSize=sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot,&pe)==FALSE)
break;
if(processName.CompareNoCase(pe.szExeFile)==0)
{
id=pe.th32ProcessID;
//获取当前进程所在路径
mehandle=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,id);
me.dwSize=sizeof(MODULEENTRY32);
Module32First(mehandle,&me);
processPath=me.szExePath;
break;
}
}
CloseHandle(hSnapshot);
return id;
}
{
char pFileName[MAX_PATH];
int nPos = GetCurrentDirectory( MAX_PATH, pFileName);
CString strSaveDir;(pFileName);
if( nPos < 0 ){
AfxMessageBox(L"获取当前路径失败,请重试。");
ExitProcess(0);
}
CString strDelExe=strSaveDir+L"\\1.exe";
CString strmDelExe=L"1.exe";
if(TRUE==SetCurrentDirectory(strSaveDir))
{
CFileFind finder;
BOOL bol=finder.FindFile(strDelExe);
if(TRUE==bol)
{
DWORD procID=this->GetProcessIdFromName(strmDelExe,strSaveDir);//获取进程ID
if(procID>0)
{
HANDLE handle=OpenProcess(PROCESS_TERMINATE,FALSE,procID);
BOOL ret=TerminateProcess(handle,4);//这里必须是4 否则无法结束进程
if(0==ret)
{
AfxMessageBox(L"未结束指定的进程");
return 0;
}
}
DeleteFileW(strDelExe);
}else
{
AfxMessageBox(L"获取相关可执行文件失败,请检查文件是否存在¨);
return 0;
}
}else
{
AfxMessageBox(L"获取相关可执行文件失败,请检查文件夹是否存在");
}
return false;
}
// 根据名称获取进程ID
DWORD CMyProductOptionWnd::GetProcessIdFromName(CString processName, CString processPath)
{
PROCESSENTRY32 pe;
MODULEENTRY32 me;
DWORD id=0;
HANDLE mehandle;
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize=sizeof(PROCESSENTRY32);
BOOL ret=Process32First( hSnapshot,&pe);
if(!ret)
return 0;
while(1)
{
pe.dwSize=sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot,&pe)==FALSE)
break;
if(processName.CompareNoCase(pe.szExeFile)==0)
{
id=pe.th32ProcessID;
//获取当前进程所在路径
mehandle=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,id);
me.dwSize=sizeof(MODULEENTRY32);
Module32First(mehandle,&me);
processPath=me.szExePath;
break;
}
}
CloseHandle(hSnapshot);
return id;
}