한글 초성 중성 종성을 프로그램이 직접 입력하는 방법 있을까요?

조회수 3577회

내가 미리 설정한 txt 파일이나 바로 문자열을 입력받아서 그걸 사람이 직접 입력하는것마냥 초성 중성 종성을 하나씩 입력하는 프로그램을 구현해보고싶습니다. 초성 중성 종성을 구별하는것까지는 인터넷에 자료가 많기에 문제없지만 그걸 직접 사람이 입력하는것처럼 구현하는 방법이 떠오르지않습니다.

제가 생각해본 방법은 '친구' 라는 단어가 있으면 문자열 배열에 'ㅊ' '치' '친' 이런식으로 일일이 저장하는 방식으로 생각을 해봤는데 비효율적인것같아 도움을 구해봅니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 윈도우에서라면 win32의 SendInput을 이용할 수 있습니다. 다음 코드는 실행된 다음 5초 이후에 gotlzhem라는 키보드 입력을 차례로 발생시키는데요. 한글로는 해시코드에 해당합니다. 실행되자마자 메모장을 실행해놓고 기다리면 해시코드라고 입력 되네요.(한글로 선택된 상태여야 합니다.)

    비주얼 스튜디오에서 돌렸어요.

    #include "stdafx.h"
    #include <windows.h>
    int main()
    {
        INPUT ip;
    
        // 5초 대기
        Sleep(5000);
        ip.type = INPUT_KEYBOARD;
        ip.ki.wScan = 0; // hardware scan code for key
        ip.ki.time = 0;
        ip.ki.dwExtraInfo = 0;
    
        ip.ki.wVk = 0x47; // virtual-key code for the "ㅎ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x4F; // virtual-key code for the "ㅐ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x54; // virtual-key code for the "ㅅ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x4C; // virtual-key code for the "ㅣ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x5A; // virtual-key code for the "ㅋ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x48; // virtual-key code for the "ㅗ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x45; // virtual-key code for the "ㄷ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        ip.ki.wVk = 0x4D; // virtual-key code for the "ㅡ" key
        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
    
        // Release the "A" key
        ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
        SendInput(1, &ip, sizeof(INPUT));
        return 0;
    }
    

    코드 출처

    실행하면 이렇게 돼요. 이미지 이름이나 설명을 여기에 넣어주세요.


    다른 글자를 원하시면 여기를 참고하셔서 원하는 코드를 매칭해서 사용하시면 될 것 같습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 와우 감사합니다! 중간중간에 200ms정도 딜레이를 주니 정말 사람이 입력하는것처럼 보이네요! 알 수 없는 사용자 2016.4.13 16:24

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

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

(ಠ_ಠ)
(ಠ‿ಠ)