´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¸¶Ä¡ »ç¿ëÀÚ°¡ Á÷Á¢ ÀÔ·ÂÇÑ °Íó·³ ¿î¿µÃ¼Á¦¿¡ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù.
¸ÅÅ©·Î³ª ÀÚµ¿ ¿ÀŸ ±³Á¤, ½ºÅ©¸° Űº¸µå, À½¼º ÀÔ·Â µîÀÇ ÇÁ·Î±×·¥¿¡¼ ´Ù¸¥ ÀÔ·ÂÀ» Á¶ÇÕÇÏ¿© Űº¸µå ÀÔ·ÂÀ» ¸¸µé¾î ³¾ ¶§ »ç¿ëÇÕ´Ï´Ù.
UINT SendInput([in] UINT cInputs, [in] LPINPUT pInputs, [in] int cbSize);
INPUT ±¸Á¶Ã¼ÀÇ ¹è¿À» Àü´ÞÇϸé ÀÌ Á¤º¸´ë·Î ÀÔ·ÂÀ» »ý¼ºÇÕ´Ï´Ù. ¹è¿°ú ¹è¿ °³¼ö, ÀÔ·Â ±¸Á¶Ã¼ÀÇ Å©±â¸¦ Àμö·Î Àü´ÞÇÕ´Ï´Ù. ¼º°øÀûÀ¸·Î »ý¼ºÇÑ ÀԷ¼ö¸¦ ¸®ÅÏÇϴµ¥ ½ÇÆÐÇßÀ¸¸é 0À» ¸®ÅÏÇÕ´Ï´Ù. ÀÔ·Â Á¤º¸´Â ´ÙÀ½ ±¸Á¶Ã¼¿¡ ÀúÀåÇÕ´Ï´Ù.
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
} DUMMYUNIONNAME;
} INPUT, *PINPUT, *LPINPUT;
¸¶¿ì½º, Űº¸µå, Çϵå¿þ¾î ÀÔ·Â Á¤º¸°¡ °ø¿ëü·Î Æ÷ÇԵǾî ÀÖÀ¸¸ç ¾î¶² Á¾·ùÀÇ ÀÔ·ÂÀÎÁö´Â typeÀ¸·Î ÁöÁ¤ÇÕ´Ï´Ù. INPUT_MOUSE, INPUT_KEYBOARD, INPUT_HARDWARE ¼¼ Á¾·ù°¡ ÀÖÀ¸¸ç ŸÀÔ¿¡ µû¶ó ¾î¶² ±¸Á¶Ã¼ÀÇ Á¤º¸¸¦ ÀÐÀ»Áö °áÁ¤ÇÕ´Ï´Ù. Űº¸µå ÀÔ·Â ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°½À´Ï´Ù.
typedef struct tagKEYBDINPUT {
WORD wVk;
WORD wScan;
DWORD dwFlags;
DWORD time;
ULONG_PTR dwExtraInfo;
} KEYBDINPUT, *PKEYBDINPUT, *LPKEYBDINPUT;
wVk : ÀÔ·ÂÇÒ °¡»óŰ. KEYEVENTF_UNICODE Ç÷¡±×°¡ ÀÖÀ¸¸é ÀÌ °ªÀº 0À̾î¾ß ÇÕ´Ï´Ù.
wScan : ½ºÄµÄÚµå. KEYEVENTF_UNICODE Ç÷¡±×°¡ ÀÖÀ¸¸é À¯´ÏÄÚµå ¹®ÀÚ°ªÀÔ´Ï´Ù.
dwFlags : Ç÷¡±×ÀÔ´Ï´Ù.
- KEYEVENTF_EXTENDEDKEY : ½ºÄµÄڵ尡 2¹ÙÀÌÆ®¶ó´Â ¶æÀ̸ç ù ¹ÙÀÌÆ®´Â 0xE0ÀÔ´Ï´Ù.
- KEYEVENTF_UNICODE : °¡»ó۰¡ ¾Æ´Ñ À¯´ÏÄڵ带 ÀÔ·ÂÇÕ´Ï´Ù.
- KEYEVENTF_SCANCODE : °¡»ó۰¡ ¾Æ´Ñ ½ºÄµÄÚµå·Î ۸¦ ½Äº°ÇÕ´Ï´Ù.
- KEYEVENTF_KEYUP : ۸¦ ´©¸£´Â °ÍÀÌ ¾Æ´Ï¶ó ³õ¾Ò´Ù´Â ¶æÈü´Ï´Ù.
´ÙÀ½Àº °£´ÜÇÑ ¿¹Á¦ÀÔ´Ï´Ù. Àڽſ¡°Ô Á÷Á¢ ÀÔ·ÂÇÏ´Â °ÍÀº º° Àǹ̰¡ ¾øÀ¸¹Ç·Î Ŭ¸¯½Ã 3ÃÊ Å¸À̸Ӹ¦ ¼³Ä¡ÇÑ ÈÄ Æ÷Ä¿½º¸¦ °¡Áø ÇÁ·Î±×·¥¿¡°Ô °Á¦·Î ÀÔ·ÂÀ» ¹ß»ý½Ãŵ´Ï´Ù. À©µµ¿ì¸¦ ¿ÞÂÊ ¸¶¿ì½º ¹öưÀ¸·Î Ŭ¸¯ÇÏ°í ¸Þ¸ðÀåÀ¸·Î Æ÷Ä¿½º¸¦ ¿Å°Ü µÎ¸é ¸Þ¸ðÀå¿¡ ¹®ÀÚ¿ÀÌ ÀԷµ˴ϴÙ.
void SendChar();
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
TCHAR str[128] = TEXT("Ŭ¸¯Çϸé 3ÃÊ ÈÄ ¹®ÀÚ¿À» Ÿ°ÙÀ¸·Î º¸³À´Ï´Ù.");
switch (iMessage) {
case WM_CREATE:
hWndMain = hWnd;
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, str, lstrlen(str));
EndPaint(hWnd, &ps);
return 0;
case WM_LBUTTONUP:
SetTimer(hWnd, 1, 3000, NULL);
return 0;
case WM_TIMER:
KillTimer(hWnd, 1);
SendChar();
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
void SendChar()
{
TCHAR str[128] = TEXT("ÇÑ±Û Kor \r\n123|{}");
INPUT arInput[256];
int idx = 0;
for (TCHAR* c = str; *c; c++) {
arInput[idx].type = INPUT_KEYBOARD;
arInput[idx].ki.wVk = 0;
arInput[idx].ki.wScan = *c;
arInput[idx].ki.dwFlags = KEYEVENTF_UNICODE;
idx++;
arInput[idx].type = INPUT_KEYBOARD;
arInput[idx].ki.wVk = 0;
arInput[idx].ki.wScan = *c;
arInput[idx].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
idx++;
}
SendInput(idx, arInput, sizeof(INPUT));
}
º¸³¾ ¹®ÀÚ¿À» ¹è¿¿¡ ´ã¾Æ µÎ°í ·çÇÁ¸¦ µ¹¸ç ÇÑ ¹®ÀÚ¾¿ ²¨³» ÀÔ·Â Á¤º¸¸¦ ¸¸µì´Ï´Ù. °¢ À¯´ÏÄÚµå ¹®ÀÚ¿¡ ´ëÇØ ´©¸§ Çѹø, ¶À ÇѹøÀ» ±³´ë·Î º¸³»¸é Æ÷Ä¿½º¸¦ °¡Áø À©µµ¿ì·Î WM_CHAR ¸Þ½ÃÁö°¡ Àü´ÞµÇ¾î ¹®ÀÚ¿ÀÌ ÀԷµ˴ϴÙ. Ű ÀÔ·ÂÀÌ ¾Æ´Ñ ¹®ÀÚ¸¦ º¸³»´Â °ÍÀ̹ǷΠCapsLock, Shift, ÇÑ¿µ ¸ðµå µî¿¡ ¿µÇ×À» ¹ÞÁö ¾Ê°í ÀÓÀÇÀÇ ¹®ÀÚ¸¦ º¸³¾ ¼ö ÀÖ½À´Ï´Ù.

µ· ¸ø ¹ú¾îµµ ÁÁ´Ù. Áñ°Ì°Ô »ì¸é µÈ´Ù. 403 Forbidden403 Forbidden |
|