mirror of
https://github.com/vxunderground/VX-API
synced 2024-06-28 17:51:16 +00:00
Create IsProcessRunning.cpp
This commit is contained in:
parent
c349c1bdb7
commit
0975c27a37
101
Windows API/IsProcessRunning.cpp
Normal file
101
Windows API/IsProcessRunning.cpp
Normal file
@ -0,0 +1,101 @@
|
||||
BOOL IsProcessRunningA(PCHAR ProcessNameWithExtension, BOOL IsCaseSensitive)
|
||||
{
|
||||
HANDLE hProcess = NULL;
|
||||
|
||||
DWORD ProcessIdArray[1024] = { 0 };
|
||||
DWORD ProcessIdArraySize = 0;
|
||||
DWORD NumberOfBytesReturned = 0;
|
||||
|
||||
if (!EnumProcesses(ProcessIdArray, sizeof(ProcessIdArray), &NumberOfBytesReturned))
|
||||
return FALSE;
|
||||
|
||||
ProcessIdArraySize = NumberOfBytesReturned / sizeof(DWORD);
|
||||
|
||||
for (DWORD dwIndex = 0; dwIndex < ProcessIdArraySize; dwIndex++)
|
||||
{
|
||||
HMODULE Module = NULL;
|
||||
CHAR ProcessStringName[MAX_PATH] = { 0 };
|
||||
|
||||
if (ProcessIdArray[dwIndex] == 0)
|
||||
continue;
|
||||
|
||||
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessIdArray[dwIndex]);
|
||||
if (hProcess == NULL)
|
||||
continue;
|
||||
|
||||
if (!EnumProcessModules(hProcess, &Module, sizeof(Module), &NumberOfBytesReturned))
|
||||
continue;
|
||||
|
||||
if (GetModuleBaseNameA(hProcess, Module, ProcessStringName, sizeof(ProcessStringName) / sizeof(WCHAR)) == 0)
|
||||
continue;
|
||||
|
||||
if (hProcess)
|
||||
CloseHandle(hProcess);
|
||||
|
||||
if (!IsCaseSensitive)
|
||||
{
|
||||
PCHAR String1 = CaplockStringA(ProcessNameWithExtension);
|
||||
PCHAR String2 = CaplockStringA(ProcessStringName);
|
||||
|
||||
if (StringCompareA(String1, String2) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (StringCompareA(ProcessStringName, ProcessNameWithExtension) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL IsProcessRunningW(PWCHAR ProcessNameWithExtension, BOOL IsCaseSensitive)
|
||||
{
|
||||
HANDLE hProcess = NULL;
|
||||
|
||||
DWORD ProcessIdArray[1024] = { 0 };
|
||||
DWORD ProcessIdArraySize = 0;
|
||||
DWORD NumberOfBytesReturned = 0;
|
||||
|
||||
if (!EnumProcesses(ProcessIdArray, sizeof(ProcessIdArray), &NumberOfBytesReturned))
|
||||
return FALSE;
|
||||
|
||||
ProcessIdArraySize = NumberOfBytesReturned / sizeof(DWORD);
|
||||
|
||||
for (DWORD dwIndex = 0; dwIndex < ProcessIdArraySize; dwIndex++)
|
||||
{
|
||||
HMODULE Module = NULL;
|
||||
WCHAR ProcessStringName[MAX_PATH] = { 0 };
|
||||
|
||||
if (ProcessIdArray[dwIndex] == 0)
|
||||
continue;
|
||||
|
||||
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessIdArray[dwIndex]);
|
||||
if (hProcess == NULL)
|
||||
continue;
|
||||
|
||||
if (!EnumProcessModules(hProcess, &Module, sizeof(Module), &NumberOfBytesReturned))
|
||||
continue;
|
||||
|
||||
if (GetModuleBaseNameW(hProcess, Module, ProcessStringName, sizeof(ProcessStringName) / sizeof(WCHAR)) == 0)
|
||||
continue;
|
||||
|
||||
if (hProcess)
|
||||
CloseHandle(hProcess);
|
||||
|
||||
if (!IsCaseSensitive)
|
||||
{
|
||||
PWCHAR String1 = CaplockStringW(ProcessNameWithExtension);
|
||||
PWCHAR String2 = CaplockStringW(ProcessStringName);
|
||||
|
||||
if (StringCompareW(String1, String2) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (StringCompareW(ProcessStringName, ProcessNameWithExtension) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
Loading…
Reference in New Issue
Block a user