要获取Windows机子上当前正在运行的程序名称,你可以使用Python的win32process
和win32api
模块(这些是pywin32
扩展的一部分)。但是,请注意,你需要先安装pywin32
模块。
下面是一个简单的示例,展示了如何使用这些模块来获取正在运行的进程列表和它们的名称:
- 首先,确保你已经安装了
pywin32
模块。如果没有,你可以使用pip来安装:
bash复制代码
pip install pywin32
- 使用以下Python脚本来获取正在运行的进程列表:
python复制代码
import win32process
import win32api
import win32con
def get_running_processes():
processes = []
# 枚举所有进程
handle, entry, usage = win32process.EnumProcesses()
for proc in entry:
try:
# 打开进程
process_handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, proc)
# 获取进程名
process_id, thread_id, module_name, module_base_addr = win32process.EnumProcessModules(process_handle, win32con.MAX_PATH, win32con.LIST_MODULES_32BIT)
# 使用GetModuleFileNameEx来获取完整的进程路径
filename = win32process.GetModuleFileNameEx(process_handle, module_base_addr)
# 你可能只想获取进程名,而不是完整的路径,所以这里我们使用splitpath来获取它
process_name = win32api.GetFileName(filename)
processes.append(process_name)
# 关闭进程句柄
win32api.CloseHandle(process_handle)
except:
pass # 忽略任何错误,继续下一个进程
return processes
# 获取进程列表并打印
print(get_running_processes())
注意:这个脚本会尝试获取所有正在运行的进程的名称,但由于权限问题或某些其他原因,某些进程可能无法被访问。对于这些进程,脚本会简单地忽略错误并继续。此外,由于进程可能在脚本执行期间启动或停止,所以返回的列表可能并不完全准确。
另外,请注意,脚本中使用的win32con.LIST_MODULES_32BIT
标志可能不适用于64位进程。如果你需要处理64位进程,你可能需要使用win32con.LIST_MODULES_64BIT
或根据目标系统的架构进行条件检查。但是,在大多数情况下,使用win32con.LIST_MODULES_32BIT
就足够了,因为大多数现代Windows系统都支持WOW64(Windows on Windows 64-bit),这使得32位进程可以在64位系统上运行。