#include <tlhelp32.h>
using std::wstring;
int isChildProcess()
{
int ret = 1;
TCHAR szModule[512] = {0};
GetModuleFileName(NULL, szModule, 512);
wstring wstrModule = szModule;
DWORD d_expID = 0;
GetWindowThreadProcessId(GetShellWindow(), &d_expID);
PROCESSENTRY32 p;
PROCESSENTRY32 *info = &p;
// 在使用这个结构之前,先设置它的大小
info->dwSize = sizeof(PROCESSENTRY32);
HANDLE handlePro = NULL; //结束进程句柄
// 给系统内的所有进程拍一个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
return 1;
}
// 遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap, info);
BOOL terminate = FALSE;
while( bMore != FALSE)
{
if(wstrModule.find(info->szExeFile) != std::wstring::npos)
{
if(d_expID == info->th32ParentProcessID)
ret = 0;
else
ret = 1;
break;
}
bMore = Process32Next(hProcessSnap, info);
}
::CloseHandle(hProcessSnap);
return ret;
}
参考:
https://blog.csdn.net/iiprogram/article/details/631893