Code:
bool MainWindow::isRunning(char *qtcreator)
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
{
return false;
}
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
bool trouve = false;
for ( i = 0; i < cProcesses; i++ )
{
if( aProcesses[i] != 0 )
{
wchar_t szProcessName[256];
// obtient le handle du process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i] );
// Obtient le nom du process
if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
}
}
QString test;
test.toWCharArray(szProcessName);
if( test == qtcreator ) {
trouve = true;
}
CloseHandle( hProcess );
}
}
if (trouve) {
return true;
} else {
return false;
}
}
Partager