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