#include <windows.h>
#include <TLHELP32.H>
#include <stdio.h>
#include <Psapi.h>
int main(int argc, char* argv[])
{
DWORD dwCurProId = 0, dwParentId = 0;
HANDLE hProcess = NULL, hProcessSnap = NULL;
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
TCHAR szParentProcName[MAX_PATH] = {0};
dwCurProId = GetCurrentProcessId();
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return 0;
}
//
if( !Process32First( hProcessSnap, &pe32 ) )
{
CloseHandle( hProcessSnap );
return 0;
}
do
{
if (pe32.th32ProcessID == dwCurProId)
{
dwParentId = pe32.th32ParentProcessID;
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwParentId);
if (!hProcess)
{
return 0;
}
DWORD dwRet = GetModuleFileNameEx(hProcess, NULL, szParentProcName, MAX_PATH);
if (dwRet == 0)
{
return 0;
}
printf("Parent process name : %s", szParentProcName);
if (lstrcmp(szParentProcName, ("Explorer.Exe")) == 0)
{
//do something
}
}
} while(Process32Next( hProcessSnap, &pe32 ));
getchar();
return 0;
}
#include <TLHELP32.H>
#include <stdio.h>
#include <Psapi.h>
int main(int argc, char* argv[])
{
DWORD dwCurProId = 0, dwParentId = 0;
HANDLE hProcess = NULL, hProcessSnap = NULL;
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
TCHAR szParentProcName[MAX_PATH] = {0};
dwCurProId = GetCurrentProcessId();
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return 0;
}
//
if( !Process32First( hProcessSnap, &pe32 ) )
{
CloseHandle( hProcessSnap );
return 0;
}
do
{
if (pe32.th32ProcessID == dwCurProId)
{
dwParentId = pe32.th32ParentProcessID;
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwParentId);
if (!hProcess)
{
return 0;
}
DWORD dwRet = GetModuleFileNameEx(hProcess, NULL, szParentProcName, MAX_PATH);
if (dwRet == 0)
{
return 0;
}
printf("Parent process name : %s", szParentProcName);
if (lstrcmp(szParentProcName, ("Explorer.Exe")) == 0)
{
//do something
}
}
} while(Process32Next( hProcessSnap, &pe32 ));
getchar();
return 0;
}