안녕하세요~~~
윈도부분의 왕초보입니다.. Spy++라는것도 첨 이용해보고요.. 헌데 Spy++라는게 굉장히 좋은 툴인줄 알았는데 일부 애플리케이션들에 대해서는 Spy도 찍지 못하네요...
어떻게 하면 Spy에 찍히지 않는거죠?? 그리고 Spy에도 찍히지 않는 애플리케이션들에 대해선 어떻게 조작이 가능한거죠??
여러 고수님들께 잘 부탁드립니다...
좋은 하루 되세요~~~
정확히 알고 하는 답변은 아닙니다만...
SPY++는 윈도우들과 윈도우들 간의 메시지 이동을 추적하는 프로그램이죠. 다시 말해서 현재 프로세스와 쓰레드를 보여주는 기능은 없다는 것이죠. 만일 프로그램에서 윈도가 제공하는 윈도 기능 또는 라이브러리를 쓰지 않고, 자체 윈도우 시스템을 이용한다면 SPY++로도 추적이 불가능 할 것 같습니다만...
spy++에서 말씀하신 그 '찍기'는 regsitered 된 Window 들을 찾아주는 것입니다.
WIN32 API로 WIndows 프로그램을 만드실때 WinMain 에서 해주는 처음 일들이 화면에 보여줄 윈도우를 등록(RegisterWindow...)하는 것이고, 그 윈도우들이 윈도우즈 시스템의 관리 윈도우 리스트 테이블에 등록되는 것이죠..
Spy++에서 찾을 수 없는 것들은 말 그대로 등록되지 않은 윈도우란 뜻입니다. 즉, 눈으로 봐서는 여러개의 윈도우들로 구성된 것 같은데, 사실은 그저 프로그램이 '그려주는' 결과 일뿐 별개의 윈도우들은 아닌 경우인 것이죠.
예를들어 Google의 Picasar는 하나의 큰 윈도우 안에, 그 모든 콘트롤들을 직접 '그려' 주고 있는것입니다. 이경우 spy++에서는 내부의 스크롤바나 콤보박스가 spy++에서는 아예 안보이는것이죠.
------------------------------------------------- $yes 4 8 15 16 23 42
아~~ 이제야 이해가 가는것 같네요... 꾸뻑^^
좋은 하루 되세요!!
그런 경우에도 윈도우즈 application은 기본적으로 WINDOWS MESSAGE를 처리하게 되어 있으니까 해당 프로그램이 어떤 WINDOW MESSAGE를 받고 있는가 확인을 해보셔야 할 것 같네요..
WINDOWS MESSAGE에는 WINDOWS에서 기본적으로 정의된 메시지 말고도 WM_USER 메시지, 그리고 개인이 별도로 새로 생성해서 만든 REGISTERED MESSAGE 라는 것들도 있습니다.
WINDOWS MESSAGE이외에 해당 어플리케이션이 다른 접근 방법으로도 조작이 (예를들어 COM interface, exported DLL function, memory map, system event, socket, pipe 등) 가능할지도 모릅니다.
어떻게 조작할 것인가는 프로그램이 무엇인가, 어떤 조작을 원하는가에 따라 선택을 하여야 할 것 같습니다. 어떤 경우는 해당프로그램 코드를 바꾸지 않는이상 힘든 경우도 많이 있을것 같네요...
좋은 결과를 기대합니다..
인용: 어떤 경우는 해당프로그램 코드를 바꾸지 않는이상 힘든 경우도 많이 있을것 같네요...
제 경우는 님이 말씀하신 이 경우에 해당될것 같네요. 자세한 설명 주셔서 정말 감사합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
정확히 알고 하는
정확히 알고 하는 답변은 아닙니다만...
SPY++는 윈도우들과 윈도우들 간의 메시지 이동을 추적하는 프로그램이죠.
다시 말해서 현재 프로세스와 쓰레드를 보여주는 기능은 없다는 것이죠.
만일 프로그램에서 윈도가 제공하는 윈도 기능 또는 라이브러리를 쓰지 않고, 자체 윈도우 시스템을
이용한다면 SPY++로도 추적이 불가능 할 것 같습니다만...
spy++에서 말씀하신 그
spy++에서 말씀하신 그 '찍기'는 regsitered 된 Window 들을 찾아주는 것입니다.
WIN32 API로 WIndows 프로그램을 만드실때 WinMain 에서 해주는 처음 일들이
화면에 보여줄 윈도우를 등록(RegisterWindow...)하는 것이고, 그 윈도우들이
윈도우즈 시스템의 관리 윈도우 리스트 테이블에 등록되는 것이죠..
Spy++에서 찾을 수 없는 것들은 말 그대로 등록되지 않은 윈도우란 뜻입니다.
즉, 눈으로 봐서는 여러개의 윈도우들로 구성된 것 같은데, 사실은 그저
프로그램이 '그려주는' 결과 일뿐 별개의 윈도우들은 아닌 경우인 것이죠.
예를들어 Google의 Picasar는 하나의 큰 윈도우 안에, 그 모든 콘트롤들을
직접 '그려' 주고 있는것입니다. 이경우 spy++에서는 내부의 스크롤바나
콤보박스가 spy++에서는 아예 안보이는것이죠.
-------------------------------------------------
$yes 4 8 15 16 23 42
아~~ 이제야 이해가
아~~
이제야 이해가 가는것 같네요...
꾸뻑^^
좋은 하루 되세요!!
좋은 하루 되세요!!
그런 경우에도
그런 경우에도 윈도우즈 application은 기본적으로 WINDOWS MESSAGE를 처리하게 되어 있으니까
해당 프로그램이 어떤 WINDOW MESSAGE를 받고 있는가 확인을 해보셔야 할 것 같네요..
WINDOWS MESSAGE에는 WINDOWS에서 기본적으로 정의된 메시지 말고도 WM_USER 메시지, 그리고
개인이 별도로 새로 생성해서 만든 REGISTERED MESSAGE 라는 것들도 있습니다.
WINDOWS MESSAGE이외에 해당 어플리케이션이 다른 접근 방법으로도 조작이
(예를들어 COM interface, exported DLL function, memory map, system event,
socket, pipe 등) 가능할지도 모릅니다.
어떻게 조작할 것인가는 프로그램이 무엇인가, 어떤 조작을 원하는가에 따라
선택을 하여야 할 것 같습니다. 어떤 경우는 해당프로그램 코드를 바꾸지 않는이상
힘든 경우도 많이 있을것 같네요...
좋은 결과를 기대합니다..
-------------------------------------------------
$yes 4 8 15 16 23 42
고맙습니다...
제 경우는 님이 말씀하신 이 경우에 해당될것 같네요.
자세한 설명 주셔서 정말 감사합니다.
좋은 하루 되세요!!
좋은 하루 되세요!!
댓글 달기