spy++, inspect가 특정 프로그램의 child windows를 불러오지 못하는 거 같습니다

조회수 277회

윈도우 프로그램을 제어하고 싶어서 spy++와 inpect를 사용해서 프로그램 정보를 봤는데요 child window가 나와야 명령어를 입력해서 제어를 할 텐데 아무것도 안 나옵니다

왜 그러는 걸까요?

사진첨부 어떻게 하는지 몰라서 구글 드라이브 공유 드립니다

위에가 제어하고 싶은 프로그램이고 아래가 inpect 화면입니다

https://docs.google.com/spreadsheets/d/1oj6dNo9xjBYYJFtqtFpBA3KqZfkory3O065ArA8KonM/edit?usp=sharing

1 답변

  • 일반적으로 spy++와 inspect는 대상 프로그램의 GUI 구조 및 프로세스 정보를 확인하는데 사용됩니다. 하지만 특정 프로그램의 child window를 인식하지 못하는 경우가 있습니다. 이러한 경우, 다음과 같은 몇 가지 이유가 있을 수 있습니다.

    해당 child window가 다른 스레드에서 생성된 경우

    Windows에서는 스레드 간 통신을 위해 메시지 큐를 사용합니다. 특정 child window가 다른 스레드에서 생성되었다면, 해당 child window의 핸들이 다른 스레드에서만 유효하기 때문에 spy++와 inspect가 인식하지 못할 수 있습니다. 해당 child window가 사용 중인 시스템 리소스 때문에 인식하지 못하는 경우

    특정 child window가 사용 중인 GDI(Grapic Device Interface) 리소스가 많은 경우, Windows는 해당 child window의 핸들을 일시적으로 해제할 수 있습니다. 이러한 경우에는 해당 child window의 핸들이 무효화될 수 있으므로 spy++와 inspect가 인식하지 못할 수 있습니다. 대상 프로그램이 보안을 강화한 경우

    일부 보안 프로그램은 다른 프로세스의 메모리에 접근하는 것을 제한하므로, 이러한 프로그램이 실행 중인 경우 spy++와 inspect가 인식하지 못할 수 있습니다. 이러한 경우에는 대상 프로그램의 GUI 구조 및 프로세스 정보를 확인하기 위해 다른 도구를 사용해야 할 수 있습니다. 예를 들어, Windows의 내장 도구인 Process Explorer를 사용하여 대상 프로세스의 GUI 구조 및 스레드 정보를 확인할 수 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)