Python遍历Enum
时间: 2023-12-14 15:33:09 浏览: 132
可以使用Python内置的enumerate()函数来遍历Enum。具体步骤如下:
1. 导入Enum模块。
2. 定义一个枚举类。
3. 使用enumerate()函数遍历枚举类,获取枚举成员的名称和值。
以下是一个示例代码:
```python
from enum import Enum
class Color(Enum):
RED = '#F44336'
BLUE = '#2196F3'
GREEN = '#4CAF50'
for color in Color:
print(color.name, color.value)
```
输出结果为:
```
RED #F44336
BLUE #2196F3
GREEN #4CAF50
```
相关问题
Python遍历进程中的所有句柄
要遍历 Python 进程中的所有句柄,可以使用 `ctypes` 库来访问 Windows API。下面是一个示例代码:
```
import ctypes
import sys
kernel32 = ctypes.windll.kernel32
PROCESS_QUERY_INFORMATION = 0x0400
PROCESS_VM_READ = 0x0010
def enum_windows_handles(pid):
hModule = kernel32.GetModuleHandleW("kernel32.dll")
psapi = ctypes.WinDLL("psapi.dll")
EnumProcessModules = psapi.EnumProcessModules
EnumProcessModules.restype = ctypes.c_bool
GetModuleBaseName = psapi.GetModuleBaseNameW
GetModuleBaseName.restype = ctypes.c_uint
GetModuleBaseName.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint32]
hProcess = kernel32.OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, False, pid)
if hProcess:
modules = (ctypes.c_void_p * 1024)()
cbNeeded = ctypes.c_uint32()
if EnumProcessModules(hProcess, ctypes.byref(modules), ctypes.sizeof(modules), ctypes.byref(cbNeeded)):
nMods = cbNeeded.value // ctypes.sizeof(ctypes.c_void_p)
for i in range(nMods):
module = modules[i]
module_name = ctypes.create_unicode_buffer(1024)
GetModuleBaseName(hProcess, module, module_name, ctypes.sizeof(module_name))
print(module_name.value)
else:
print("Failed to enumerate modules.")
kernel32.CloseHandle(hProcess)
else:
print("Failed to open process with PID %d." % pid)
sys.exit(1)
enum_windows_handles(pid=int(sys.argv[1]))
```
这段代码使用了 `ctypes` 库调用了 Windows API 来遍历指定的进程的所有模块。使用方法是执行这个代码,并将要遍历的进程的 PID 作为参数传入:
```
python enum_handles.py 12345
```
其中,`12345` 是要遍历的进程的 PID。
python遍历出 句柄下的所有句柄 和标题
在Python中,你可以使用Win32 API来遍历所有窗口句柄和标题。具体实现步骤如下:
1. 导入pywin32库,该库可以让你在Python中使用Win32 API。
2. 定义一个回调函数,作为EnumWindows函数的参数,用于接收每个窗口的句柄和标题。
3. 调用EnumWindows函数,传入回调函数的地址,遍历所有窗口句柄。
4. 在回调函数中,使用GetWindowText函数获取当前窗口的标题,并输出句柄和标题信息。
以下是一个示例代码,供参考:
```python
import win32gui
def enum_windows_callback(hwnd, window_list):
title = win32gui.GetWindowText(hwnd)
if title:
# 输出句柄和标题信息
print("Handle: ", hwnd, ", Title: ", title)
window_list.append((hwnd, title))
if __name__ == '__main__':
# 遍历所有窗口句柄
windows = []
win32gui.EnumWindows(enum_windows_callback, windows)
```
注意:在运行时,需要以管理员身份运行程序才能获取到所有窗口的信息。另外,需要安装pywin32库。
阅读全文