Sou totalmente novato no C++, estou fazendo uma DLL usando o visual studio. Estou tentando comparar o diretório do processo com um nome que eu dou, segue o exemplo abaixo: unsigned int ipath = 0;
ipath = game.GetProcessPathByName("Dell");
if ( ipath )
{
// Acho que vai fechar kkkkk
MessageBox(0, L"Ok", L"Encontrado", MB_OK);
}
Simplesmente se eu tiver o processo com o diretório "C:\Dell\Updater.exe" essa função não consegue encontra-lo, agradeço a ajuda.
unsigned long CProject::GetProcessPathByName(char *pathanme)
{
HANDLE hProcSnapshot = ::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( INVALID_HANDLE_VALUE != hProcSnapshot )
{
PROCESSENTRY32 procEntry = {0};
procEntry.dwSize = sizeof(PROCESSENTRY32);
if( ::Process32First( hProcSnapshot, &procEntry ) )
{
do
{
HANDLE hModSnapshot = ::CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, procEntry.th32ProcessID );
if( INVALID_HANDLE_VALUE != hModSnapshot )
{
MODULEENTRY32 modEntry = {0};
modEntry.dwSize = sizeof( MODULEENTRY32 );
if( Module32First( hModSnapshot, &modEntry ) )
{
char* converted = new char[wcslen(modEntry.szExePath) + 1];
wcstombs( converted, modEntry.szExePath, wcslen(modEntry.szExePath) );
if( _stricmp(pathanme, converted) )
{
::CloseHandle( hModSnapshot );
return 1;
}
}
::CloseHandle( hModSnapshot );
}
}
while( ::Process32Next( hProcSnapshot, &procEntry ) );
}
::CloseHandle( hProcSnapshot );
}
return 0;
}