From f1d1d1b37ad21bfd26a948d42c9334e7ac0003ad Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 10 Sep 2024 09:44:54 -0700 Subject: [PATCH] feat: improve Windows parent process detection using psutil --- aider/run_cmd.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/aider/run_cmd.py b/aider/run_cmd.py index ce0c6ac34..6de2402d6 100644 --- a/aider/run_cmd.py +++ b/aider/run_cmd.py @@ -6,6 +6,7 @@ import sys from io import BytesIO import pexpect +import psutil def run_cmd(command, verbose=False, error_print=None): @@ -25,14 +26,16 @@ def run_cmd(command, verbose=False, error_print=None): def get_windows_parent_process_name(): try: - kernel32 = ctypes.windll.kernel32 - h_process = kernel32.OpenProcess(0x0400, False, os.getppid()) - exe_path = ctypes.create_unicode_buffer(260) - kernel32.QueryFullProcessImageNameW( - h_process, 0, exe_path, ctypes.byref(ctypes.c_ulong(260)) - ) - kernel32.CloseHandle(h_process) - return os.path.basename(exe_path.value).lower() + current_process = psutil.Process() + while True: + parent = current_process.parent() + if parent is None: + break + parent_name = parent.name().lower() + if parent_name in ['powershell.exe', 'cmd.exe']: + return parent_name + current_process = parent + return None except Exception: return None