IPC (Inter Process Communication)

 »ç¿ëÀÚÀÇ ¿ä±¸°¡ Áõ´ëµÇ¸é¼­ ÇÁ·Î±×·¥ÀÌ °®Ãç¾ß ÇÒ ±â´É ¶ÇÇÑ ¸¹¾ÆÁö°í ´ç¿¬È÷ ÇÁ·Î±×·¥ Å©±âµµ ºñ´ëÇØÁ³´Ù. ¶ÇÇÑ ÇϳªÀÇ ÇÁ·Î±×·¥¸¸À¸·Î´Â »ç¿ëÀÚÀÇ ¿å±¸¸¦ ÃæÁ·½ÃŰÁö ¸øÇØ ¿©·¯°³ÀÇ ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÏ´Â »óȲÀÌ ¹ß»ýÇϰí ÀÖ´Ù. ¿©±â¼­ ¼­·Î ´Ù¸¥ ÇÁ·Î±×·¥ (¾ö¹ÐÈ÷ ¾ê±âÇϸé ÇÁ·Î¼¼½º)µé°£¿¡ µ¥ÀÌÅ͸¦ ±³È¯Çϰųª ƯÁ¤ ±â´ÉÀ» »ç¿ëÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ °ÍÀÌ ´ÙÀ½¿¡ ¼Ò°³µÇ´Â IPC ±â¼ú(ÇÁ·Î¼¼½º°£ Åë½Å¹æ¹ý) ÀÌ´Ù.

  SendMessage() / PostMessage() : »ç¿ëÀÚ Á¤ÀÇ ¸Þ½ÃÁö, ½Ã½ºÅÛ µî·Ï ¸Þ½ÃÁö
  WM_COPYDATA, Atom µîÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý
  DLL (Dynamic Link Library) °øÀ¯
  µ¿Àû ÀÚ·á ±³È¯ (Dynamic Data Exchange : DDE)
  OLE ÀÚµ¿È­ (Automation)
  ¸Þ¸ð¸® ¸Ê ÆÄÀÏ (Memory Map File)
  NetBIOS
  ³×ÀÓµå ÆÄÀÌÇÁ (Named Pipe)
  ¸ÞÀÏ ½½·Ô (Mail Slot)

 À§¿¡ ³ª¿­µÈ IPC¿¡´Â µ¿ÀÏ ½Ã½ºÅÛ(·ÎÄà ½Ã½ºÅÛ)¿¡¼­¸¸ »ç¿ëµÇ´Â °ÍÀÌ ÀÖ°í, ´Ù¸¥ ½Ã½ºÅÛ(¸®¸ðÆ® ½Ã½ºÅÛ)¿¡¼­µµ ÀÛµ¿µÇ´Â °ÍÀÌ ÀÖ´Ù.

 ´ÙÀ½ÀÇ ¿¹Á¦´Â wParam°ú lParam µÎ º¯¼ö¸¦ ÀÌ¿ëÇØ¼­ µ¥ÀÌÅÍ Àü¼ÛÀÌ °¡´ÉÇÏ´Ù. ÀÌ µÎ º¯¼öÀÇ Å©±â´Â ´ÙÀ½°ú °°´Ù.

 

¸¸¾à µ¥ÀÌÅͰ¡ 4¹ÙÀÌÆ®°¡ ³ÑÀ» °æ¿ì, °°Àº ÇÁ·Î¼¼½º ³»¿¡¼­´Â ±¸Á¶Ã¼¿¡ Á¤º¸¸¦ ´ã°Å³ª ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¼­ Á¤º¸¸¦ ÀúÀåÇÑ ÈÄ À̰ÍÀÇ Æ÷ÀÎÅ͸¦ lParamÀ» ÅëÇØ Àü´ÞÇÏ¸é µÈ´Ù. ÇÏÁö¸¸ ´Ù¸¥ ÇÁ·Î¼¼½º °£¿¡´Â ÀÌ·±½ÄÀº ºÒ°¡´ÉÇÏ°í ¸Þ¸ð¸® ¸ÊÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.

 

1. SendMessage() / PostMessage() »ç¿ë

 a) RegisterWindowMessage()¸¦ »ç¿ëÇÒ °æ¿ì

 RegisterWindowMessage() ÇÔ¼ö´Â ½Ã½ºÅÛ¿¡ À¯ÀÏÇÑ »õ À©µµ¿ì ¸Þ½ÃÁö¸¦ Á¤ÀÇÇÏ°í µî·ÏÇÑ´Ù. ¸®ÅϵǴ ¸Þ½ÃÁö °ªÀº SendMessage() ³ª PostMessage() °°Àº ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 ÀÌ ÇÔ¼öÀÇ ¿øÇüÀº À§¿Í °°´Ù. ÀÌ ÇÔ¼öÀÇ ÀÎÀڷδ ¸Þ½ÃÁö¸¦ ÁÖ°í¹ÞÀ» ÇÁ·Î±×·¥³¢¸® ¹Ì¸® ¾à¼ÓÇÑ ¹®ÀÚ¿­À» ³Ñ°ÜÁØ´Ù. °°Àº ¹®ÀÚ¿­À» ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ µî·ÏÇÑ ÇÁ·Î±×·¥³¢¸®¸¸ ¼­·Î ¸Þ½ÃÁö¸¦ ÁÖ°í¹ÞÀ» ¼ö ÀÖ°Ô µÇ´Âµ¥, ÀÌ ÇÔ¼öÀÇ ¹Ýȯ°ªÀ» ´Ù¸¥ ÇÁ·Î±×·¥¿¡ Àü´ÞÇÒ ¸Þ½ÃÁö·Î ÀÌ¿ëÇÏ¸é µÈ´Ù.

 

 

 b) FindWindow()¸¦ »ç¿ëÇÒ °æ¿ì

  FindWindow()ÀÇ ÇÔ¼ö ¿øÇüÀº ´ÙÀ½°ú °°´Ù.

 FindWindow() ÇÔ¼ö´Â ÀÎÀڷΠŬ·¡½º À̸§°ú À©µµ¿ì ĸ¼ÇÀ» ÁÖ°í, ±×¿¡ ÇØ´çÇÏ´Â À©µµ¿ì¸¦ ã´Â´Ù. ¸ðµç top-levelÀÇ À©µµ¿ì¸¦ ãÁö¸¸, Â÷Àϵå À©µµ¿ì´Â ãÁö ¸øÇÑ´Ù. ÇØ´çÇÏ´Â À©µµ¿ì°¡ ¾øÀ¸¸é NULL°ªÀÌ ¸®ÅϵȴÙ. ¸¸¾à lpszClassNameÀÌ NULLÀ̸é À©µµ¿ì ĸ¼Ç¿¡ ÇØ´çÇÏ´Â À©µµ¿ì¸¸ ã°í, lpszWindowNameÀÌ NULLÀ̸é ÁÖ¾îÁø Ŭ·¡½º À̸§¿¡ ÇØ´çÇÏ´Â À©µµ¿ì¸¦ ã´Â´Ù.

 

 

 

- The end of this article -