要获取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位系统上运行。