Àüü ȸéÀÌ »ç¿ë ÁßÀÎÁö ÆÇ´ÜÇϱâ
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·Î Àüü ȸé Å©±â¸¦ ±¸ÇÏ´ø °ÍÀ» ¸ð´ÏÅÍ¿¡ ¸ÂÃç¼ ±¸Çϵµ·Ï ¼öÁ¤ÇÑ °ÍÀÌ´Ù.