[C#] String 값을 키보드 타이핑처럼 전달하기.(매크로 만들기 키 입력)

2020. 7. 27. 16:36🧑🏻‍💻/C#

    C#은 활성 애플리케이션에 키보드 입력을 출력 할 수 있도록 SendKeys라는 메서드를 지원합니다.
C/C++에서 사용하려면 dll 까지 추가하고 파라미터도 일일히 확인하고 키 맵도 확인해야 했던 기능이 C#에선 간단하게 구현할 수 있는것에 놀랐습니다. 

C/C++ 사용 예시 : [DllImport("user32.dll")]
static extern uint keybd_event(byte bVk, byte bScan, int dwFlags, UIntPtr dwExtraInfo);

이랬던 친구가

 SendKeys.Send("Chanhhh");

이런 식으로 입력하면 "Chanhhh"를 입력할 수 있습니다. 활성화 돼있는 창에 키 Press 됩니다.

 SendKeys.Send("찬히히");

물론 한글도 지원합니다.

SendKeys.Send("{ENTER}");

   물론  특수 키도 지원 합니다. SendKeys 을 이용하여 특수 키(엔터키) 를 입력 해 봤습니다.
F1을 입력하기 위해서는 {F1} 을 인자로 주면 됩니다. ESC는 {ESC}

변수 또한 지원합니다.

String chan = "send char";
SendKeys.Send(chan);

SendKeys.Send(chan + "acter"); //복합도 지원

조합 키(Ctrl+C)는 아래처럼 사용하면 됩니다.

SendKeys.Send("^c");

 

 여담 : 맨날 C만 사용하다가 C# 잠깐이라도 써보면 진짜 강력한 기능에 매번 놀랍니다. 이제껏 이래 힘들게 코딩해왔나 싶기도하고...

 

출처 및 참고. : MSDN 번역이 기계번역이여서 Parameter값에 오류가 있을 수 있으니 영문으로 보시는걸 추천 드립니다.

 

SendKeys.Send(String) Method (System.Windows.Forms)

키 입력을 활성 애플리케이션에 보냅니다.Sends keystrokes to the active application.

docs.microsoft.com