用函数 CreateToolhelp32Snapshot 列出进程的ID号,列出的函数如下:
static void print_process(PROCESSENTRY32 *pPE)
{
RETAILMSG(1, (L"Process: id=%08X (%s)/r/n", pPE->th32ProcessID, pPE->szExeFile ));
}
static void list_process()
{
HANDLE hShot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hShot != INVALID_HANDLE_VALUE )
{
// List all process here
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
Process32First( hShot, &pe );
print_process( &pe );
while( Process32Next(hShot, &pe) )
{
print_process( &pe );
}
CloseToolhelp32Snapshot( hShot );
}
else
{
RETAILMSG(1, (L"CreateToolhelp32Snapshot failed %d/r/n", GetLastError() ));
}
}
驱动里面的结果是:
Process: id=00400002 (NK.EXE)
Process: id=01430006 (udevice.exe)
Process: id=02150002 (udevice.exe)
Process: id=03830002 (udevice.exe)
Process: id=053A0002 (udevice.exe)
Process: id=06110002 (servicesd.exe)
Process: id=06140002 (Gpsmc.exe)
Process: id=072B0002 (Explorer.exe)
Process: id=07240022 (Manager.exe)
Process: id=07B10032 (DebugLog.exe)
Process: id=0729002A (NaviOne.exe)
音频发声的时候调用 GetOwnerProcess() 得到 0729002A (NaviOne.exe)即导航程序,这个时候就可以进行相应的处理,比如暂停MP3