65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
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}' 바로가기를 찾을 수 없습니다.")
|