본문 바로가기
[ Program ]/자체숙제프로젝트

1-3.다른프로그램간 데이터전송 준비

by 관이119 2013. 12. 2.

<사진은 누르면 커집니다!>

 

전송을 하기전에 두가지 정도 알아보고 가야할것 같습니다.

 

핸들,윈도우메세지.

 

제가 원래 c#을 약간했는데 c++ 로 뭔가 만들어볼려고 하니 가장 이해할수 없는 내용이 위 두가지 였습니다.

 

일단 핸들 같은 경우는 쉽게 생각해서 객체의 인스턴스라고 생각하시면 되겠습니다.

완전 간단하게 말하면 현재 떠 있는 창을 컨트롤 하고 싶을때 접근대상이 되는 이름 정도로 생각하시면 되겠습니다.

 

일단 시작에 보면 vs 폴더 내에 Tools 폴더내에 spy++ 이라는 프로그램을 실행 해 봅시다.

 

 

실행하면 아래와 같은 창이 뜹니다.

 

 

그러면 창1 이라고 되있는건 무슨내용인지 모르니 일단 x 눌러서 닫아버리고

 

 

위에서 빨간 네모가 되있는찾기를 눌러봅시다. 그럼 중앙에 창찾기라는 팝업이 뜹니다.

 

 

창찾기 가운데 있는 빨간네모안의 타겟모양을 드래그 하면 대상프로그램/윈도우 의 핸들을 볼수 있습니다.

자세한 사용법은 나중에 하면서 더 찾아보기로 하고

저는 일단 찾기도구로 윈도우 시계에 올려놔봤습니다.

클래스/핸들 등이 표시 되는군요

저기 보이는 0001009A 핸들을 통해서 윈도우 시계에 명령을 내리고 응답을 받을수 있습니다.

물론 다른창들도 모두 핸들을 가지고 있습니다.

이렇게 핸들은 대상을 컨트롤 할수있는 이름 이라고 생각하시면 됩니다.

요렇게 핸들은 이해하고 넘어가면 되겠습니다.

 

 

다음은 윈도우 메세지입니다.

WM_CREATE : 윈도우가 생성될 때 발생

WM_ACTIVE : 윈도우가 활성화될 때 또는 비활성화되면 발생

WM_NCACTIVATE : 윈도우의 비작억영역의 활성화 또는 비활성화시 발생 (윈도우 타이틀바 색상 제어)

WM_DESTROY : 윈도우가 파괴되기 직전에 발생

WM_NCDESTROY : 모든 윈도우가 파괴되고 난 후 발생

WM_QUERYENDSESSION : 운영체제가 log-off 또는 종료될 때 발생

WM_PAINT : 윈도우가 다시 그려져야 하면 발생 (아주 중요한 메시지로 MFC에서는 OnPaint() 또는 OnDraw()

WM_ERASEBKGND : 윈도우의 배경색이 다시 그려져야 할 때 발생

WM_SHOWWINDOW : 윈도우가 보여질 때 또는 숨겨질 때 발생


WM_LBUTTONDOWN : 마우스 왼쪽 버튼을 누르면 발생

WM_LBUTTONUP : 마우스 오른쪽 버튼을 눌렀다가 떼면 발생

WM_RBUTTONDOWN : 마우스 오른쪽 버튼을 누르면 발생

WM_RBUTTONUP : 마우스 오른쪽 버튼을 눌렀다가 떼면 발생

WM_MOUSEMOVE : 마우스가 움직이고 있으면 발생

WM_NCHITTEST : 마우스가 움직이고 있으면 발생. 마우스의 아이콘을 제어하기 위해 사용

WM_SETCURSOR : 마우스의 아이콘을 재설정해야 할 때 발생


WM_KEYDOWN : 키보드가 눌리면 발생

WM_KEYUP : 키보드를 눌렀다가 떼면 발생

WM_CHAR : 키보드가 눌려지면 발생


WM_SIZE : 윈도우의 크기가 변경되면 발생

WM_MOVE : 윈도우가 이동되면 발생

WM_WINDOWPOSCHANGING: 윈도우의 위치, 크기 등이 변하고 있으면 발생

WM_GETMINMAXINFO : 윈도우의 최소, 최대 크기가 변경되기 직전에 발생.

WM_HSCROLL : 스크롤바에서 수평 스크롤시 발생

WM_VSCROLL : 스크롤바에서 수직 스크롤시 발생


WM_TIMER : 타이머 설정 시 주기적으로 발생


WM_COMMAND : 메뉴, 버튼, 엑셀러레이터 선택 시 발생

WM_SYSCOMMAND : 시스템 메뉴, 최소화, 최대화, 이동, 닫기 등에서 발생. SC_CLOSE,

                                   SC_MINIMIZE, SC_MAXIMIZE, SC_MOVE, SC_SIZE, SC_RESTORE

WM_SYSKEYDOWN : 프로그램 실행 시 F10 키 또는 Alt의 조합키를 누르면 발생

WM_SYSKEYUP : 프로그램 실행 시 F10 키 또는 Alt의 조합키를 눌렀다가 떼면 발생

 

일단 한번 읽어 봅시다.

대충 감이 오시나요?

일단 헷갈리지 않기 위해 

Window7 = Windows운영체제(xp,vista,win7,win8 등이 있음),

Window = Windows운영체제에서 뜨는 윈도우창

요렇게 이야기 하겠습니다.

(전 개인적으로 윈도우7 을 제일좋아하니까요..)

 

완전 간단하게 말하면 window7 이 이런내용이 있다고 뿜어내는 메세지를 말합니다.

그메세지를 받으면 현재 window7이 이런상태구나 하는 내용을 알수 있죠

그내용을 중간에 가로채서 게임 오토 프로그램같은 것도 만들고요

 

그런데 메세지가 기본적으로 나오는것도 있지만 우리가 특정 메세지를 뿜어내게 만들수도 있습니다.

window7 이 메세지들을 담아두는 통이 있는데 window7은 그통에 있는 메세지들을 순서대로 뿜어냅니다.

그럼 우리가 다른 프로그램으로 보내고 싶은 내용도 그통에 넣어버리기만 하면 됩니다.

그러면 window7이 그내용을 뿜어 내는 거에요!

그통에 넣을때 어느 Window 에 메세지를 보낼지 정해줄수 있습니다.

 

따지고보면 그냥 함수호출하는거랑 똑같습니다.

그런데 좀써보면 함수호출보다 좀 자유도가 높게 쓸수 있겠다라는 생각이 듭니다.

지식이 짧아서 설명은 요정도가 한계군요

이제 대충 알았으니 윈도우 메세지로 프로그램간 데이터 전송을 해봅시다!

 

 

 

댓글