import psutil


def _进程名是否匹配(目标进程名: str | None, 输入进程名: str, 区分大小写: bool) -> bool:
    if not 目标进程名:
        return False
    if 区分大小写:
        return 目标进程名 == 输入进程名
    return 目标进程名.casefold() == 输入进程名.casefold()


def 进程名_是否为唯一实例(进程名: str, 区分大小写: bool = False) -> bool:
    """
    判断指定进程名在系统中是否仅存在一个实例。

    功能说明：
        - 默认不区分大小写，例如 "QQ.exe"、"qq.exe"、"QQ.EXE" 都可匹配。
        - 当“区分大小写”为 True 时，会按原始大小写进行完全匹配。
        - 中文进程名会按原字符串正常比较，不会因大小写兼容逻辑报错。
        - 当匹配数量恰好为 1 时返回 True。
        - 参数无效、未找到、存在多个实例或发生异常时，返回 False。

    Args:
        进程名 (str): 要判断的进程名称。
        区分大小写 (bool): 是否区分大小写，默认为 False。

    Returns:
        bool: 仅存在一个实例返回 True；否则返回 False。
    """
    try:
        if not isinstance(进程名, str):
            return False

        进程名 = 进程名.strip()
        if not 进程名:
            return False

        数量 = 0
        for 进程对象 in psutil.process_iter(['name']):
            if _进程名是否匹配(进程对象.info['name'], 进程名, 区分大小写):
                数量 += 1
                if 数量 > 1:
                    return False
        return 数量 == 1
    except Exception:
        return False
