안녕하세요.
이번 프로젝트에서는 활성화 되어있는 카카오톡 채팅방에 원하는 메세지를 보낼 수 있는 프로그램을 제작하였습니다.
대화상자 기반 프로젝트를 전에도 몇번 진행해보면서 완벽하고 잘하진 않지만 사용할만한 프로그램 제작을 생각하다
카카오톡 전송 프로그램을 생각해보았습니다.
보통 대학교나 회사에서 단체로 공지를 보내야할 때 일일히 대화방에 복사+붙여넣기가 귀찮은 경우를 많이 보았기 때문에 만들어보게 되었습니다.
카카오톡에 메세지나 파일을 보내기 위해서는
카카오톡의 프로세스에 접근해서 키보드를 후킹하는 방식으로 진행하였습니다.
Visual Studio 에서는 Spy++라는 프로그램을 통해 현재 개인 컴퓨터내에서 작동하는 프로세스, 스레드 등을 확인 할 수 있습니다.
Spy++ 프로그램을 통해 카카오톡의 프로세스는 다음과 같습니다.
프로세스의 클래스ID, 캡션을 확인하여 카카오톡이 실행중인지 확인하는 함수에서 이용할 수 있습니다.
다음은 함수 코드중 일부입니다. FindWindow , FindWindowEx 함수를 통해서 카카오톡의 정상 구동을 확인하였습니다.
문자를 보내기 위해서는 카카오톡 대화상자의 프로세스를 확인해야합니다.
위의 사진과 같이 빨간색 테두리가 대화방의 부모클래스이며
노란색(RICHEDIT50W) 와 초록색Edit가 자식 클래스입니다.
카카오톡 메세지를 보내기 위해서는 프로세스에서 활성화 되어있는 대화방을 모두 찾고
각 대화방의 Edit Control 클래스에 보낼 메세지를 입력하는 방식으로 진행하여야 합니다.
카카오톡 대화방에 메세지를 전송하는 함수입니다.
대화방의 클래스 이름은 #32770이며 찾아낸 카톡방에 SendMessage , PostMessage를 이용하여
원하는 메세지를 입력시킨후 VK_RETURN이라는 가상 키보드 입력 이벤트를 작동시켜 전송하게 되는것입니다.
사용자가 메세지를 입력하고 엔터키를 입력하는 과정을 컴퓨터 프로세스를 통해 자동으로 동작하게 만들었습니다.
파일첨부기능역시 이를 약간 응용하면 됩니다.
카카오톡 대화방에서 Ctrl + T를 입력하면 파일 탐색기가 실행이되며 파일을 선택하여 첨부할 수 있습니다.
이때 위의 탐색기 창에서 파일 이름란에 파일의 경로를 입력하고 엔터를 누르면 첨부가 되는것을 확인하였습니다.
따라서 결론적으로 파일 전송을 위해서는
1. 대화방 프로세스에 접근한다.
2. Ctrl + T 키를 가상 키보드 이벤트 처리하여 입력한다.
3. 파일 탐색기 창의 Edit Control에 정해진 파일의 경로를 입력한다.
4. 가상 키보드 이벤트 처리를 통해 엔터키를 입력한다.
아래는 파일 첨부했을 때 전송 하는 함수입니다.
처음에는 메세지 전송함수와 비슷하게 카톡 대화방의 프로세스를 찾아냅니다.
이후에 Ctrl + T를 입력하는 가상 키보드 이벤트를 진행한 후에
열린 탐색기 창의 프로세스를 FindWindow 를 통해 탐색기의 Edit Control을 찾아낸 후 경로를 입력해줍니다.
이때 Sleep을 사용하지 않으면 탐색기가 마저 열리기도 전에 아래 코드가 실행되기 때문에 오작동되는 경우가
발생하여 사용하였습니다.
추가적으로 INFO 버튼을 클릭하면 저의 인스타그램과 티스토리에 접속할 수 있도록 하이퍼링크를 연결해보았습니다.
만들면서 귀찮고 어렵다고 생각하기 보단 모르던 기능들을 하나하나씩 찾아서 꾸며내는 재미로 만들었던 것 같습니다.
이번 프로젝트에서는 아쉽지만 카톡 대화방이 열려있어야하며, 특정 상대에게만 보내는 등의 기능을 구현하지 않았습니다.
다음에도 기회가 된다면 여기에 조금더 추가해서 다양한 기능을 만들어보았으면 좋겠습니다.
'개인 프로젝트' 카테고리의 다른 글
[OpenCV] 영상처리를 이용한 숫자인식 프로젝트 (6) | 2021.01.05 |
---|---|
[YOLO]COVID-19 : 마스크 착용시에만 출입가능한 시스템 구현 (118) | 2020.03.11 |
[TCP/IP] 라즈베리파이 에서 윈도우로 문자 전송하기 (2) | 2020.03.10 |
YOLO 와 Raspberry Pi를 이용한 출입알림시스템 (demo) (16) | 2020.02.25 |