Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

apvsalvado

Comparar diretório de um processo

Recommended Posts

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta procurando com o nome errado.

Deve utilizar o nome do processo e não da pasta onde está o processo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.