import psutil import os import subprocess import pygetwindow as gw import glob # glob 모듈 import def is_program_running(process_name): """프로세스 이름을 기준으로 프로그램 실행 여부 확인""" for proc in psutil.process_iter(attrs=["pid", "name"]): if process_name.lower() in proc.info["name"].lower(): return proc.info["pid"] return None def focus_window_by_title(title_start): """창 제목이 특정 문자열로 시작하는 창을 찾아 활성화""" for window in gw.getAllWindows(): if window.title and window.title.startswith(title_start): # 창 제목이 조건에 맞는 경우 try: window.activate() print(f"프로그램 창으로 전환: {window.title}") return True except Exception as e: print(f"창 활성화 실패: {e}") return False return False def find_shortcut_in_start_menu(shortcut_name): """시작 메뉴에서 바로가기 찾기""" user_start_menu = os.path.expandvars(r"%APPDATA%\Microsoft\Windows\Start Menu\Programs") all_users_start_menu = os.path.expandvars(r"%ProgramData%\Microsoft\Windows\Start Menu\Programs") for start_menu_path in [user_start_menu, all_users_start_menu]: shortcut_path = glob.glob(os.path.join(start_menu_path, f"**\\{shortcut_name}.lnk"), recursive=True) if shortcut_path: return shortcut_path[0] return None def run_program(shortcut_path): """프로그램 실행""" try: subprocess.Popen([shortcut_path], shell=True) print(f"프로그램 실행: {shortcut_path}") except Exception as e: print(f"프로그램 실행 실패: {e}") if __name__ == "__main__": program_name = "@카피맨.exe" shortcut_name = "@카피맨" window_title_start = "카피맨" # 창 제목이 "카피맨"으로 시작하는지 확인 # 프로그램 실행 여부 확인 pid = is_program_running(program_name) if pid: print(f"{program_name} 실행 중 (PID: {pid})") # 실행 중인 프로그램 창으로 전환 if not focus_window_by_title(window_title_start): print(f"'{window_title_start}'로 시작하는 창을 찾을 수 없습니다.") else: print(f"{program_name} 실행 중이 아님. 실행 시도 중...") # 바로가기를 찾아 실행 shortcut_path = find_shortcut_in_start_menu(shortcut_name) if shortcut_path: run_program(shortcut_path) else: print(f"'{shortcut_name}' 바로가기를 찾을 수 없습니다.")