VC++による指定されたアプリケーション名(拡張子を含む)の全てのウィンドウを完全に閉じる例
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);
HANDLE hSnap;
int i = 0;
BOOL ExistFlag;
do{
BOOL bCmp;
do{
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
bCmp = FALSE;
if (hSnap != INVALID_HANDLE_VALUE){
BOOL b = Process32First(hSnap, &pe), OnceCFlag = TRUE;
while (b){
b = Process32Next(hSnap, &pe);
if (!strcmp(pe.szExeFile, buf)){
bCmp = TRUE;
::SendMessage(GetWindowHandle(pe.th32ProcessID), WM_CLOSE, 0, 0);
if (OnceCFlag){
i++;
OnceCFlag = FALSE;
}
}
}
CloseHandle(hSnap);
}
}while (bCmp && i < 100);
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap != INVALID_HANDLE_VALUE){
BOOL b = Process32First(hSnap, &pe);
ExistFlag = FALSE;
while (b){
b = Process32Next(hSnap, &pe);
if (!strcmp(pe.szExeFile, buf))
ExistFlag = TRUE;
}
CloseHandle(hSnap);
}
}while (ExistFlag && i < 100);
Since 2014.5.22