4.27.2010

列出所有執行中的 process name - in CE

如果是在 Windows XP/NT/2000 etc 會用 enumprocessmodule 這類的 RAPI。
但是在 CE 裡面這些 function 好像不 support。

CodeGuru 這一篇文章有 example,藥用 CreateToolhelp32Snapshot( )。
OS 要有 Core OS Services 的 Debugging Tools 的 Toolhelp API

MSDN 這一篇有說明 (要 toolhelp.lib)

sample code 是:

#include "stdafx.h"
#include <windows.h>
#include <commctrl.h>


#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
PROCESSENTRY32 pe32 = { 0 };

HANDLE hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcSnap == INVALID_HANDLE_VALUE)
return 0;


pe32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hProcSnap,&pe32))
{
do{
wprintf(L"PID:%9d NAME: %s\r\n", pe32.th32ProcessID, pe32.szExeFile);
}while(Process32Next(hProcSnap, &pe32));
}

CloseHandle(hProcSnap);

return 0;
}


輸出的結果是:

PID: 4194306 NAME: NK.EXE
PID: 30736390 NAME: udevice.exe
PID: 41418754 NAME: udevice.exe
PID: 62521346 NAME: udevice.exe
PID: 79429634 NAME: udevice.exe
PID: 92995586 NAME: servicesd.exe
PID: 82313222 NAME: explorer.exe
PID: 97910798 NAME: enumallprocessconsole.exe

沒有留言: