如果我只知道exe文件的名稱,如何在Windows程序中知道進程是否正在運行? 有問題的進程是64位的TeamSpeak3 ts3client_win64.exe和32位的ts3client_win32.exe。如何知道一個進程是否在C++,WinAPI的Windows中運行?
我使用C++
如果我只知道exe文件的名稱,如何在Windows程序中知道進程是否正在運行? 有問題的進程是64位的TeamSpeak3 ts3client_win64.exe和32位的ts3client_win32.exe。如何知道一個進程是否在C++,WinAPI的Windows中運行?
我使用C++
使用CreateToolhelp32Snapshot
函數來創建當前進程表的快照,然後使用Process32First
和Process32Next
用於迭代快照。您可以通過查看PROCESSENTRY32
結構的szExeName
字段來獲取每個可執行文件的名稱。
有關如何使用這些功能的示例,請參見the MSDN example。
這種方法的優點是,不同於任何EnumProcesses
爲基礎的解決方案,它不會從比賽條件苦:與EnumProcesses
它可以發生,你完成枚舉過程之後的過程被毀滅,但你抽時間去之前打開進程(或閱讀我們的進程可執行文件名稱)。
您可以使用EnumProcesses
,OpenProcess
組合,和GetModuleFileNameEx
(或者,QueryFullProcessImageName
爲Vista或更高版本)。 MSDN甚至有an example。
Windows NT有幾個API用於枚舉進程。
非常感謝,完美的工作:) – StudentX