char *str_name = "uedit32.exe";
HWND ghWnd = NULL;
DWORD th32ProcessID = 0;
BOOL GetProcID()
{
// str_name = strcpy ((char *)str_name, "uedit32");
HANDLE handleSnapshot; //定义CreateToolhelp32Snapshot系统快照句柄
HANDLE handleTobeKilled; //定义要结束进程句柄
handleSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //获得系统快照句柄
PROCESSENTRY32 *info; //定义PROCESSENTRY32结构字指
//PROCESSENTRY32 结构的 dwSize 成员设置成 sizeof(PROCESSENTRY32)
info = new PROCESSENTRY32;
info->dwSize = sizeof(PROCESSENTRY32);
//调用一次 Process32First 函数,从快照中获取进程列表
Process32First(handleSnapshot, info);
//重复调用 Process32Next,直到函数返回 FALSE 为止
while(Process32Next(handleSnapshot, info) != FALSE)
{
if (strcmpi(str_name, info->szExeFile) == 0)
{
th32ProcessID = info->th32ProcessID;
CloseHandle(handleSnapshot);
delete info;
info = NULL;
return TRUE;
}
}
CloseHandle(handleSnapshot);
delete info;
info = NULL;
return FALSE;
}
BOOL CALLBACK TerminateAppEnum(HWND hwnd, LPARAM lParam)
{
DWORD dwID;
GetWindowThreadProcessId(hwnd, &dwID);
if(dwID == (DWORD)lParam)
{
::SetParent(hwnd,NULL);
::ShowWindowAsync(hwnd,3);
::ShowWindow(hwnd,SW_SHOWMAXIMIZED);
::UpdateWindow (hwnd);
return FALSE;
/*PostMessage(hwnd, WM_CLOSE, 0, 0) ; */
}
return TRUE ;
}
void CwwDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if (GetProcID())
{
EnumWindows(TerminateAppEnum, th32ProcessID);
}
}