°­ÁÂ¿Í ÆÁ

Űº¸µå, ¸¶¿ì½º ÀÔ·ÂÀ» ÀÓÀÇ·Î »ý¼ºÇϱ⠳¯Â¥:2023-12-1 10:00:43 Á¶È¸¼ö:879
ÀÛ¼ºÀÚ : ÀÛ°¡K
Æ÷ÀÎÆ® : 2339
°¡ÀÔÀÏ : 2020-02-14 22:27:56
¹æ¹®È½¼ö : 357
±Û 260°³, ´ñ±Û 100°³
¼Ò°³ : öµé±â¸¦ °ÅºÎÇÏ´Â °³±¸ÀïÀÌ ÇÁ·Î±×·¡¸Ó
ÀÛ¼º±Û º¸±â
ÂÊÁö º¸³»±â
´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¸¶Ä¡ »ç¿ëÀÚ°¡ Á÷Á¢ ÀÔ·ÂÇÑ °Íó·³ ¿î¿µÃ¼Á¦¿¡ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù.
¸ÅÅ©·Î³ª ÀÚµ¿ ¿ÀŸ ±³Á¤, ½ºÅ©¸° Űº¸µå, À½¼º ÀÔ·Â µîÀÇ ÇÁ·Î±×·¥¿¡¼­ ´Ù¸¥ ÀÔ·ÂÀ» Á¶ÇÕÇÏ¿© Űº¸µå ÀÔ·ÂÀ» ¸¸µé¾î ³¾ ¶§ »ç¿ëÇÕ´Ï´Ù.

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

¸ñ·Ïº¸±â »èÁ¦ ¼öÁ¤ ½Å°í ½ºÅ©·¦


·Î±×ÀÎÇÏ¼Å¾ß ´ñ±ÛÀ» ´Þ ¼ö ÀÖ½À´Ï´Ù.