Àüü È­¸éÀÌ »ç¿ë ÁßÀÎÁö ÆÇ´ÜÇϱâ

2006-08-23 ½Å¿µÁø

³×ÀÌÆ®¿ÂÀ» º¸¸é Àüü È­¸é »ç¿ë½Ã¿¡ »óŸ¦ ÀÚµ¿À¸·Î ´Ù¸¥ ¿ë¹« ÁßÀ¸·Î º¯°æÇØ ÁÖ´Â ±â´ÉÀÌ ÀÖ´Ù. ÀÌ ±â´ÉÀ» ¾î¶»°Ô ±¸ÇöÇÏ´ÂÁö »ìÆìº¸µµ·Ï ÇÏÀÚ.

³×ÀÌÆ®¿Â

³×ÀÌÆ®¿ÂÀº 3°¡Áö ¸Þ½ÃÁö ÈÅÀ» ¼³Ä¡ÇÑ´Ù. Űº¸µå ÈÅ(WH_KEYBOARD), ¸¶¿ì½º ÈÅ(WH_MOUSE), ½© ÈÅ(WH_SHELL)ÀÌ ±×°ÍÀÌ´Ù. °¢°¢ÀÇ ÈÄÅ· ÇÔ¼ö°¡ ¼öÇà µÇ¸é, ³×ÀÌÆ®¿ÂÀº º»Ã¼·Î ¸Þ½ÃÁö¸¦ Àü´ÞÇÑ´Ù. ÇØ´ç ¸Þ½ÃÁö ÇÔ¼ö¿¡¼­ ŸÀ̸Ӹ¦ ¹ß»ý½Ã۰í, ŸÀÌ¸Ó ÇÔ¼ö¿¡¼­ GetForegroundWindow¸¦ »ç¿ëÇØ¼­ ÇöÀç À©µµ¿ì°¡ õü È­¸éÀÎÁö¸¦ ÆÇ´ÜÇÑ´Ù. Àüü È­¸éÀÎÁö ÆÇ´ÜÇÏ´Â ºÎºÐÀÇ ÀÇ»ç ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

GetDesktopWindow·Î µ¥½ºÅ©Å¾ÀÇ Å©±â¸¦ ±¸ÇѰͰú GetForegroundWindowÀÇ Å¬¶óÀÌ¾ðÆ® ¿µ¿ªÀ» ±¸Çؼ­ Å«Áö¸¦ ºñ±³ÇÏ´Â °ÍÀÌ´Ù. WorkerW¿Í ProgManÀº Àüüȭ¸éÀÌ ¾Æ´Ñ ¹ÙÅÁ È­¸é À©µµ¿ì´Ù. ¹ÙÅÁ È­¸é¿¡ Æ÷Ä¿½º°¡ °£ °æ¿ì¿¡ ¿ÀÆÇÇÏ´Â °ÍÀ» ¹æÁöÇϱâ À§Çؼ­ Ŭ·¡½º ¸íÀ» ºñ±³ÇÏ´Â °ÍÀÌ´Ù. Ini ÆÄÀÏ¿¡¼­´Â ȯ°æ ¼³Á¤¿¡¼­ ÇØ´ç ±â´ÉÀ» »ç¿ëÇϵµ·Ï ¼³Á¤Çß´ÂÁö¸¦ üũÇÑ´Ù.

±×¸®°í ÇÑ °¡Áö ´õ Ã¼Å©ÇØ¾ß ÇÒ Á¡Àº Àüü È­¸éÀÎÁö¸¦ ÆÇ´ÜÇϱâ À§Çؼ­ ±»ÀÌ ÈÅÀ» ¼³Ä¡ÇÒ Çʿ䰡 ¾ø´Ù´Â Á¡ÀÌ´Ù. ÈÅ ¼öÇà¿¡ µé¾î°¡´Â ºñ¿ë°ú À§Ç輺À» °í·ÁÇßÀ» ¶§ ŸÀÌ¸Ó µîÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ´õ °æÁ¦ÀûÀÌ´Ù. 1ÃÊ¿¡ Çѹø¾¿¸¸ Ã¼Å©ÇØµµ °ÅÀÇ ½Ç½Ã°£À¸·Î üũÇÏ´Â °Í°ú ¶È°°ÀÌ º¸Àδٴ Á¡À» »ý°¢ÇØ¾ß ÇÑ´Ù. ¹°·Ð »ç¿ëÀÚ ÀÎDzÀÌ ¾ø´Â °æ¿ì¿¡´Â ŸÀ̸Ӹ¦ »ç¿ëÇØ¼­ Æú¸µÇÏ´Â °ÍÀÌ ´õ ¸¹Àº CPU ÀÚ¿øÀ» ¼Ò¸ðÇÑ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ±ä ÇÏ´Ù.

Codes

À§¿¡¼­ Á¦½ÃÇÑ ÀÇ»ç Äڵ带 ¹ÙÅÁÀ¸·Î ½ÇÁ¦ FullScreen À©µµ¿ì¸¦ ã´Â ÇÔ¼ö¸¦ ¸¸µé¾î º¸¸é ¾Æ·¡¿Í °°´Ù. Àüü È­¸éÀ» »ç¿ëÇÏ´Â À©µµ¿ì°¡ ÀÖ´Â °æ¿ì¿¡´Â ÇØ´ç À©µµ¿ìÀÇ ÇÚµéÀ» ¾ø´Â °æ¿ì¿¡´Â NULLÀ» ¸®ÅÏ ÇÑ´Ù.

GetAncestor API¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù¸é ¾Æ·¡¿Í °°ÀÌ while¹®À» »ç¿ëÇØ¼­ µ¿ÀÏÇÑ ±â´ÉÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. whileÀÇ Á¶°Ç½ÄÀÌ ¸¶À½¿¡ µéÁö ¾Ê´Â´Ù¸é ¾Æ·¡¿Í °°ÀÌ for¹®À» »ç¿ëÇØ¼­ ÃÖ´ë Ž»ö Ƚ¼ö¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ´Ù.

´ÙÁß ¸ð´ÏÅÍ

À§ Äڵ带 »ìÆìº¸¸é ¾Ë ¼ö ÀÖÁö¸¸, ´ÙÁß ¸ð´ÏÅÍ »óȲ¿¡¼­´Â À§ Äڵ尡 Ç×»ó ÃÖ¼±ÀÇ ´äÀ» Á¦°øÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¹°·Ð ´ëºÎºÐÀÇ Ç® ½ºÅ©¸° È­¸éÀ¸·Î ÀüȯÇÏ´Â À©µµ¿ì°¡ 1¹ø ¸ð´ÏÅÍ¿¡ ¹ÙÀεù µÈ´Ù´Â Á¡¿¡¼­ Å« ¹®Á¦´Â ¾øÀ¸³ª ¾Æ·¡¿Í °°Àº ¹æ½ÄÀ¸·Î Ç® ½ºÅ©¸°À» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥¿¡ ´ëÇØ¼­´Â ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù.

À§ ÄÚµå´Â ÇöÀç À©µµ¿ì°¡ ÀÖ´Â ¸ð´ÏÅÍÀÇ Å©±â·Î À©µµ¿ì¸¦ ¿Å±â´Â ÄÚµå´Ù. ´ÙÀ½°ú °°Àº »óȲÀ» »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù. µÎ °³ÀÇ ¸ð´ÏÅ͸¦ »ç¿ëÇÏ´Â »óȲ¿¡¼­ 1¹ø ¸ð´ÏÅͺ¸´Ù 2¹ø ¸ð´ÏÅÍÀÇ ÇØ»óµµ°¡ ³·Àº °æ¿ì´Ù. ±×¸®°í ±×·± »óȲ¿¡¼­ À§¿Í °°Àº ÄÚµå·Î ƯÁ¤ ÇÁ·Î±×·¥ÀÌ 2¹ø ¸ð´ÏÅÍ¿¡¼­ Ç® ½ºÅ©¸°À» »ç¿ëÇÏ°Ô µÇ¸é À§¿¡¼­ Á¦°øÇÑ ÄÚµå´Â NULLÀ» ¸®ÅÏÇÑ´Ù. 2¹ø ¸ð´ÏÅÍ¿¡¼­ ÃÖ´ë·Î Å« È­¸éÀÌ µÇ¾î ºÃÀÚ, GetDesktopWindowÀÇ Å©±â º¸´Ù´Â À۱⠶§¹®ÀÌ´Ù. µû¶ó¼­ ÀÌ·¯ÇÑ °æ¿ì¸¦ ó¸®ÇØ ÁØ´Ù¸é ¸ÖÆ¼ ¸ð´ÏÅÍ »óȲ¿¡¼­µµ Á» ´õ À¯¿¬ÇÏ°Ô µ¿ÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾Æ·¡ÀÇ ÄÚµå´Â ´Ü¼øÈ÷ GetDesktopWindow·Î Àüü È­¸é Å©±â¸¦ ±¸ÇÏ´ø °ÍÀ» ¸ð´ÏÅÍ¿¡ ¸ÂÃç¼­ ±¸Çϵµ·Ï ¼öÁ¤ÇÑ °ÍÀÌ´Ù.