Click to See Complete Forum and Search --> : processid


ralph
March 30th, 1999, 03:00 PM
how can i get a processid of a running process which i

did not start ?

Ralph
March 30th, 1999, 03:00 PM
how can i get a processid of a running process which i

did not start ?

prachi kankane
February 28th, 2002, 10:35 PM
Hi,
U can use this function...
long GetProcessId(const char* szProcessName)
{
LPDWORD lpdwPIDs ;
DWORD dwSize, dwSize2, dwIndex ;
HMODULE hMod ;
HANDLE hProcess ;
char szFileName[ MAX_PATH ] ;

// Call the PSAPI function EnumProcesses to get all of the
// ProcID's currently in the system.
// NOTE: In the documentation, the third parameter of
// EnumProcesses is named cbNeeded, which implies that you
// can call the function once to find out how much space to
// allocate for a buffer and again to fill the buffer.
// This is not the case. The cbNeeded parameter returns
// the number of PIDs returned, so if your buffer size is
// zero cbNeeded returns zero.
// NOTE: The "HeapAlloc" loop here ensures that we
// actually allocate a buffer large enough for all the
// PIDs in the system.
dwSize2 = 256 * sizeof( DWORD ) ;
lpdwPIDs = NULL ;
do
{
if( lpdwPIDs )
{
HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
dwSize2 *= 2 ;
}
lpdwPIDs = (unsigned long *)HeapAlloc( GetProcessHeap(), 0, dwSize2 );
if( lpdwPIDs == NULL )
{
return 0 ;
}
if( !EnumProcesses( lpdwPIDs, dwSize2, &dwSize ) )
{
HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
return 0 ;
}
}while( dwSize == dwSize2 ) ;

// How many ProcID's did we get?
dwSize /= sizeof( DWORD ) ;

// Loop through each ProcID.
for( dwIndex = 0 ; dwIndex < dwSize ; dwIndex++ )
{
szFileName[0] = 0 ;
// Open the process (if we can... security does not
// permit every process in the system).
hProcess = OpenProcess(
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, lpdwPIDs[ dwIndex ] ) ;
if( hProcess != NULL )
{
// Here we call EnumProcessModules to get only the
// first module in the process this is important,
// because this will be the .EXE module for which we
// will retrieve the full path name in a second.
if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &dwSize2 ) )
{
// Get Full pathname:
if( !GetModuleFileNameEx( hProcess, hMod,
szFileName, sizeof( szFileName ) ) )
{
szFileName[0] = 0 ;
}
}
CloseHandle( hProcess ) ;
}

if (szFileName[0])
{
char* pFile = strrchr(szFileName,'\\');
pFile++;

// Did we just bump into what we looked for ?
if( _stricmp(pFile,szProcessName)==0)
{
long ProcessIdToReturn = lpdwPIDs[ dwIndex ];
HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
return ProcessIdToReturn;
}
}
}

HeapFree( GetProcessHeap(), 0, lpdwPIDs ) ;
return 0;
}


This will get u ProcessID for any running process...Only Argument u have pass is the Process NAme.
Like GetProcessId("myprocess.exe");