안녕하세요. pywinauto
로 자동화 업무를 위한 프로그래밍을 할 때, 실행시킬 앱을 프로세스 ID로 연결하는 방법에 관한 포스팅입니다.
pywinauto 패키지
pywinauto
패키지는 윈도우 응용 프로그램을 효과적으로 자동화하는데 흔히 쓰입니다. Windows GUI 소프트웨어를 자동으로 제어할 때 효율적으로 사용할 수 있어요. pywinauto
는 다양한 윈도우 응용 프로그램과 호환되며, 다양한 컨트롤 유형에 대한 기능들을 제공하여 다양한 자동화 시나리오 작성이 가능합니다.
process ID 조회하기
파이썬 코드를 통해 실행중인 앱들의 process id를 먼저 조회하고, 그 중 자동화를 원하는 앱의 process id를 얻어볼게요.
from pywinauto import findwindows, application
procs = findwindows.find_elements()
# 실행중인 앱들의 process id 출력하기
for proc in procs:
print(f"{proc} / 프로세스ID: {proc.process_id}")
위의 코드를 실행하면 아래 이미지와 같이 각 앱의 process id를 조회할 수 있습니다.
process ID로 connect 하기
자동화 할 앱의 process ID를 얻은 후에는 아래 코드를 실행하여 application에 connect하여 다이얼로그를 획득할 수 있습니다. 위 코드에서 process_id
변수에 자신이 사용하고자 하는 응용 프로그램의 프로세스 ID를 지정하고, 해당 프로세스에 대한 연결을 시도합니다. 성공적으로 연결되면 app
객체를 통해 해당 응용 프로그램의 윈도우와 컨트롤에 접근할 수 있습니다. 필요한 작업은 main_window
객체를 사용하여 수행할 수 있어요!
from pywinauto import Application
# 프로세스 ID 지정
process_id = 1234 # 본인이 사용할 프로세스의 ID로 대체
# 프로세스 ID를 사용하여 응용 프로그램에 연결
app = Application(backend="uia").connect(process=process_id)
# 연결된 응용 프로그램의 메인 윈도우 가져오기
main_window = app.top_window()
# 컨트롤 식별자 조회
main_window.print_control_identifiers()
위 예시에서는 간단하게 main_window.print_control_identifiers()
를 호출하여 해당 윈도우의 컨트롤 정보를 출력하는 예시를 들었습니다. 실제로 필요한 작업에 맞게 코드를 수정하여 사용하시면 됩니다.