建立系統進程列表比枚舉窗口稍微復雜一些。這主要是因為所用的 API 函數對于不同的 Win32 操作系統有依靠性。在 Windows 9x、Windows Me、windows 2000 PRofessional 以及 Windows xp 中,我們可以用 ToolHelp32 庫中的 APIs 函數。但是在 Windows NT 里,我們必須用 PSAPI 庫中的 APIs 函數, PSAPI 庫是 SDK 的一部分。本文我們將討論上述所有平臺中的實現。附帶的例子程序將對上述庫中的 APIs 進行包裝,以便包裝后的函數能支持所有 Win32 操作系統。
使用 ToolHelp32 庫枚舉進程
ToolHelp32 庫函數在 KERNEL32.dll 中,它們都是標準的 API 函數。但是 Windows NT 4.0 不提供這些函。
用 EnumProcesses() API 返回的每一個進程 ID 重復這個調用過程,你便可以創建 Windows NT 的進程列表。
16位進程的處理方法
在 Windows 95,Windows 98 和 Windows ME 中,ToolHelp32 對待16位程序一視同仁,它們與 Win32 程序一樣有自己的進程IDs。但是在 Windows NT,Windows 2000 或 Windows XP 中情況并不是這樣。在這些操作系統中,16位程序運行在所謂的 VDM 當中(也就是DOS機)。