进程管理器 - 检测和管理IDE进程
| 25 | return f"PID: {self.pid}, 名称: {self.name}, 内存: {self.memory}" |
| 26 | |
| 27 | class ProcessManager: |
| 28 | """进程管理器 - 检测和管理IDE进程""" |
| 29 | |
| 30 | # IDE进程名称映射 |
| 31 | IDE_PROCESS_NAMES = { |
| 32 | IDEType.VSCODE: [ |
| 33 | 'Code.exe', 'Code - Insiders.exe', 'Code - OSS.exe', 'VSCode.exe' |
| 34 | ], |
| 35 | IDEType.CURSOR: [ |
| 36 | 'Cursor.exe', 'cursor.exe' |
| 37 | ], |
| 38 | IDEType.WINDSURF: [ |
| 39 | 'Windsurf.exe', 'windsurf.exe' |
| 40 | ], |
| 41 | IDEType.JETBRAINS: [ |
| 42 | 'idea64.exe', 'idea.exe', 'pycharm64.exe', 'pycharm.exe', |
| 43 | 'webstorm64.exe', 'webstorm.exe', 'phpstorm64.exe', 'phpstorm.exe', |
| 44 | 'clion64.exe', 'clion.exe', 'rider64.exe', 'rider.exe' |
| 45 | ] |
| 46 | } |
| 47 | |
| 48 | def __init__(self): |
| 49 | self.system = platform.system() |
| 50 | |
| 51 | def check_ide_processes(self, ide_type: IDEType) -> bool: |
| 52 | """ |
| 53 | 检查指定IDE的进程是否在运行 |
| 54 | |
| 55 | Args: |
| 56 | ide_type: IDE类型 |
| 57 | |
| 58 | Returns: |
| 59 | bool: 是否有进程在运行 |
| 60 | """ |
| 61 | processes = self.get_ide_processes(ide_type) |
| 62 | return len(processes) > 0 |
| 63 | |
| 64 | def get_ide_processes(self, ide_type: IDEType) -> List[ProcessInfo]: |
| 65 | """ |
| 66 | 获取指定IDE的所有进程信息 |
| 67 | |
| 68 | Args: |
| 69 | ide_type: IDE类型 |
| 70 | |
| 71 | Returns: |
| 72 | List[ProcessInfo]: 进程信息列表 |
| 73 | """ |
| 74 | process_names = self.IDE_PROCESS_NAMES.get(ide_type, []) |
| 75 | all_processes = [] |
| 76 | |
| 77 | for process_name in process_names: |
| 78 | processes = self._get_processes_by_name(process_name) |
| 79 | all_processes.extend(processes) |
| 80 | |
| 81 | # 额外查找基于命令行的进程(适用于Electron应用) |
| 82 | if ide_type in [IDEType.VSCODE, IDEType.CURSOR]: |
| 83 | electron_processes = self._get_electron_processes(ide_type) |
| 84 | all_processes.extend(electron_processes) |
no outgoing calls
no test coverage detected