¸Ó½Å-ÄÚµå ÁÖ¼Ò¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ÁּҴ ȣÃâµÉ ¶§, ½ºÅ©¸³Æ®ÀÇ ÇÔ¼ö·Î ¹æÇâÀüȯ ÇÕ´Ï´Ù.
Address := RegisterCallback("FunctionName" [, Options = "", ParamCount = FormalCount, EventInfo = Address])
¼º°øÇϸé, RegisterCallback()Àº ¼ýÄ¡ Áַθ¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ÁÖ¼Ò¸¦ DllCall() ¶Ç´Â ±âŸ ¸Ó½Å-ÄÚµå ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇÔ¼ö°¡ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÆÐÇϸé, ºó ¹®ÀÚ¿À» µ¹·ÁÁÝ´Ï´Ù. ½ÇÆа¡ ÀϾ´Â °æ¿ì´Â FunctionNameÀÌ:
ÇÔ¼öÀÇ À̸§ÀÔ´Ï´Ù. ±âÈ£ ±×´ë·ÎÀÇ ¹®ÀÚ¿ÀÏ °æ¿ì ¹Ýµå½Ã µû¿ÈÇ¥·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â Address°¡ È£ÃâµÉ ¶§¸¶´Ù ÀÚµ¿À¸·Î È£ÃâµË´Ï´Ù. ÇÔ¼ö´Â ¶Ç Address¿¡ °Ç³×¾îÁø ¸Å°³º¯¼öµéµµ ¹Þ½À´Ï´Ù.
[v1.1.06+]: ÇÔ¼ö À̸§ ´ë½Å¿¡ ÇÔ¼ö ÂüÁ¶¸¦ °Ç³Ú ¼ö ÀÖ½À´Ï´Ù.
0°³ ÀÌ»óÀÇ ´ÙÀ½ ´Ü¾îµéÀ» ÁöÁ¤ÇÕ´Ï´Ù. °¢ ¿É¼ÇÀº ´ÙÀ½ ¿É¼Ç°ú ½ºÆäÀ̽º·Î ±¸ºÐÇϽʽÿÀ (¿¹, C Fast
).
Fast ¶Ç´Â F: FunctionNameÀÌ È£ÃâµÉ ¶§¸¶´Ù »õ ¾²·¹µå°¡ ½ÃÀÛÇÏ´Â °ÍÀ» ÇÇÇÕ´Ï´Ù. ºñ·Ï ¼öÇ༺´ÉÀº ÁÁ¾ÆÁöÁö¸¸, Address·Î È£ÃâµÇ´Â ¾²·¹µå°¡ ´Þ¶óÁú °æ¿ì´Â (¿¹, µé¾î¿À´Â ¸Þ½ÃÁö¿¡ ÀÇÇÏ¿© ¿ªÈ£ÃâÀÌ ÃË¹ßµÉ ¶§´Â) ÇÇÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé È£ÃâµÇ´Â ¼ø°£¿¡ ¾²·¹µå°¡ ½ÇÇàµÇ´Â °æ¿ì FunctionNameÀÌ ErrorLevel, A_LastError, ±×¸®°í ¸¶Áö¸·À¸·Î-¹ß°ßµÈ â°ú °°ÀÌ Àü¿ª ¼³Á¤À» ¹Ù²Ù¾î ¹ö¸± À§ÇèÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ³íÆòÀ» º¸½Ê½Ã¿À.
CDecl ¶Ç´Â C: Address°¡ "C" È£Ãâ °ü·Ê¸¦ µû¸£µµ·Ï ¸¸µì´Ï´Ù. ÀÌ´Â ÀüÇüÀûÀ¸·Î »ý·«µË´Ï´Ù. ¿Ö³ÄÇϸé Ç¥ÁØ È£Ãâ °ü·Ê°¡ ÈξÀ ´õ ¸¹ÀÌ ¿ªÈ£Ãâ¿¡ »ç¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù.
¸Å°³º¯¼öÀÇ °³¼öÀÔ´Ï´Ù. AddressÀÇ È£ÃâÀÚ°¡ °Ç³Ü´Ï´Ù. ÀüºÎ »ý·«Çϸé, ±âº»°ªÀº FunctionName¿¡ Á¤ÀÇµÈ Çʼö ¸Å°³º¯¼öÀÇ °³¼öÀÔ´Ï´Ù. ¾î´À °æ¿ìµç, È£ÃâÀÚ°¡ Á¤È®ÇÏ°Ô ÀÌ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ °Ç³×´ÂÁö È®ÀÎÇϽʽÿÀ.
FunctionNameÀÌ Address¸¦ ÅëÇÏ¿© È£ÃâµÉ ¶§¸¶´Ù A_EventInfo¿¡¼ º¸°ÔµÉ Á¤¼öÀÔ´Ï´Ù. FunctionNameÀÌ Çϳª ÀÌ»óÀÇ Address·Î È£ÃâµÉ ¶§ À¯¿ëÇÕ´Ï´Ù. »ý·«µÇ¸é, ±âº»°ªÀº AddressÀÔ´Ï´Ù. ÁÖÀÇ: ´Ù¸¥ Àü¿ª ¼³Á¤°ú ´Ù¸£°Ô, ÇöÀç ¾²·¹µåÀÇ A_EventInfo´Â ºü¸¥ ¸ðµå¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.
½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ÆÄÀÏÀÌ 32-ºñÆ®À̸é, ÀÌ ¸Å°³º¯¼ö´Â 0ºÎÅÍ 4294967295 »çÀÌÀÇ °ªÀÔ´Ï´Ù. 64ºñÆ®À̸é, ÀÌ ¸Å°³º¯¼ö´Â 64-ºñÆ® Á¤¼öÀÔ´Ï´Ù. A_EventInfo´Â º¸Åë ºÎÈ£¾ø´Â Á¤¼ö¸¦ µ¹·ÁÁÖÁö¸¸, ¿ÀÅäÇÖÅ°´Â ºÎÈ£¾ø´Â 64-ºñÆ® Á¤¼ö¸¦ ¿Ïº®ÇÏ°Ô Áö¿øÇÏÁö ¸øÇÕ´Ï´Ù. ±×·¡¼ ¾î¶² ¿¬»êÀº ±× °ªÀ» ºÎÈ£ÀÖ´Â Á¤¼ö¿¡ ½Î¼ µ¹·ÁÁֱ⵵ ÇÕ´Ï´Ù.
¿ªÈ£Ãâ ÁÖ¼Ò¿¡ ÇÒ´çµÈ ÇÔ¼ö´Â ¸Å°³º¯¼ö¸¦ 31°³±îÁö ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃÀû ¸Å°³º¯¼ö¸¦ Çã¿ëÇÕ´Ï´Ù. ÀÌ´Â ÇÔ¼ö°¡ ¿©·¯ È£ÃâÀÚ¿¡°Ô È£ÃâµÉ ¶§ À¯¿ëÇÕ´Ï´Ù.
¸Å°³º¯¼ö¸¦ ¿Ã¹Ù¸£°Ô ¹ø¿ªÇÏ·Á¸é x86 È£Ãâ °ü·ÊÀÇ ÀÛµ¿ ¹æ½ÄÀ» ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù. ¿ÀÅäÇÖÅ°´Â ¸Å°³º¯¼ö°¡ À¯ÇüÀÌ Á¤ÀǵÇÁö ¾ÊÀ¸¹Ç·Î, ¿ªÈ£Ãâ ÇÔ¼öÀÇ ¸Å°³º¯¼ö ¸®½ºÆ®´Â Á¤¼ö·Î ±¸¼ºµÇ¾î ÀÖ´Ù°í °£Áֵ˴ϴÙ. ±×¸®°í ¾à°£ÀÇ Àç¹ø¿ªÀÌ ¿ä±¸µË´Ï´Ù.
AutoHotkey 32-bit: µé¾î¿À´Â ¸ðµç ¸Å°³º¯¼ö´Â 32-ºñÆ® Á¤¼öÀÔ´Ï´Ù. ´õ ÀÛÀº À¯ÇüÀº 32ºñÆ®¿¡ ¸Â°Ô Æе带 µ¡´ð´Ï´Ù. ¹Ý¸é¿¡ ´õ Å« À¯ÇüÀº µÎ °³ÀÇ 32 ºñÆ® ¸Å°³º¯¼ö·Î ÂÉ°³¾îÁý´Ï´Ù.
µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ºÎÈ£ÀÖ´Â Á¤¼ö¸¦ ÀǵµÇϸé, À½ÀÇ Á¤¼ö´Â ´ÙÀ½ ¿¹Á¦ Áß Çϳª·Î ³ëÃâ½Ãų ¼ö ÀÖ½À´Ï´Ù:
; ¹æ¹ý #1 if wParam > 0x7FFFFFFF wParam := -(~wParam) - 1 ; ¹æ¹ý #2: ¿ÀÅäÇÖÅ°°¡ ±Ùº»ÀûÀ¸·Î ºÎÈ£ ÀÖ´Â 64-ºñÆ® Á¤¼ö¸¦ »ç¿ëÇÑ´Ù´Â »ç½Ç¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. wParam := wParam << 32 >> 32
AutoHotkey 64-bit: µé¾î¿À´Â ¸ðµç ¸Å°³º¯¼ö´Â ºÎÈ£ÀÖ´Â 64-ºñÆ® Á¤¼öÀÔ´Ï´Ù. ¿ÀÅäÇÖÅ°´Â ºÎÈ£¾ø´Â 64-ºñÆ® Á¤¼ö¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ´õ ÀÛÀ¸¸é 64 ºñÆ®±îÁö Æе尡 µ¡´ë¾îÁö°í, ´õ Å©¸é ¾ðÁ¦³ª ÁÖ¼Ò·Î °Ç³×Áý´Ï´Ù.
AutoHotkey 32-bit/64-bit: µé¾î¿À´Â ¸Å°³º¯¼ö°¡ 8-ºñÆ® ¶Ç´Â 16-ºñÆ®¸¦ ÀǵµÇÑ´Ù¸é (¶Ç x64 ¸Ó½Å¿¡¼´Â 32-ºñÆ® ), °ªÀÇ »óÀ§ ºñÆ®µéÀº "¾²·¹±â"·Î ä¿öÁý´Ï´Ù. ÀÌ ¾²·¹±âµéÀº ºñÆ®º°-and ¿¬»êÀ¸·Î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¿©°úÇÒ ¼ö ÀÖ½À´Ï´Ù:
Callback(UCharParam, UShortParam, UIntParam) { UCharParam &= 0xFF UShortParam &= 0xFFFF UIntParam &= 0xFFFFFFFF ;... }
µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ±×ÀÇ È£ÃâÀÚ¿¡°Ô ¹®ÀÚ¿À̱⸦ ÀǵµÇÑ´Ù¸é, ½ÇÁ¦·Î ¹Þ´Â °ÍÀº ±× ¹®ÀÚ¿ÀÇ ÁÖ¼ÒÀÔ´Ï´Ù. ¹®ÀÚ¿ ÀÚü¸¦ ¹ÞÀ¸·Á¸é StrGetÀ» »ç¿ëÇϽʽÿÀ:
MyString := StrGet(MyParameter) ; AHK_L 46+
µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ±¸Á¶Ã¼ÀÇ ÁÖ¼ÒÀ̸é, °¢ ¸â¹öµéÀº ´ÙÀ½ DllCall ±¸Á¶ÀÇ ´Ü°è¸¦ µû¶ó ÃßÃâÇÕ´Ï´Ù.
ÁÖ¼Ò·Î ¸Å°³º¯¼ö ¹Þ±â [AHK_L 60+]: ÇÔ¼ö°¡ °¡º¯ÇÔ¼ö·Î ¼±¾ðµÇ¾î ÀÖÀ¸¸é, ±×ÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö´Â ¿ªÈ£Ãâ ÇÔ¼öÀÇ Ã¹ ¸Å°³º¯¼ö ÁÖ¼Ò¿¡ ÇÒ´çµË´Ï´Ù. ½ºÅ©¸³Æ® ¸Å°³º¯¼ö¿¡ ÇÒ´çµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:
callback := RegisterCallback("TheFunc", "F", 1) ; ¸Å°³º¯¼ö °³¼ö¸¦ ¸í½ÃÇØ¾ß ÇÕ´Ï´Ù. TheFunc("TheFunc was called directly.") ; Á÷Á¢ TheFunc¸¦ È£ÃâÇÕ´Ï´Ù. DllCall(callback, float, 10.5, int64, 42) ; ¿ªÈ£ÃâÀ» ÅëÇÏ¿© TheFunc¸¦ È£ÃâÇÕ´Ï´Ù. TheFunc(params*) { if IsObject(params) MsgBox % params[1] else MsgBox % NumGet(params+0, "float") ", " NumGet(params+A_PtrSize, "int64") }
´ëºÎºÐÀÇ ¿ªÈ£ÃâÇÔ¼ö´Â stdcall È£Ãâ °ü·Ê¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ °ü·Ê´Â °íÁ¤µÈ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ¿ä±¸ÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ¿ªÈ£ÃâÀÌ »ý¼ºµÉ ¶§ ParamCount¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. 64-ºñÆ® ºôµå¿¡¼´Â ParamCount¸¦ »ý·«ÇÒ ¼ö ÀÖ°í 32-ºñÆ® ºôµå´Â Cdecl ¿ªÈ£ÃâÀ» »ç¿ëÇÕ´Ï´Ù - ±×·± °æ¿ì ¸ðµç ¼±ÅÃÀûÀÎ ¸Å°³º¯¼ö´Â ±âº» °ªÀ» ¹Þ°í params¿¡ ÀúÀåÇϱâ À§ÇØ ÁÖ¼Ò¸¦ °è»êÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î´Â ¹«½ÃµË´Ï´Ù.
ÇÔ¼ö°¡ ¸Å°³º¯¼ö ¾øÀÌ ReturnÀ» »ç¿ëÇϰųª, ""¿Í °°ÀÌ ºó °ªÀ» ÁöÁ¤Çϸé (¶Ç´Â ÀüÇô ReturnÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é), 0ÀÌ ¿ªÈ£ÃâÀÇ È£ÃâÀÚ¿¡°Ô ¹ÝȯµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÇÔ¼ö´Â Á¤¼ö¸¦ ¹ÝȯÇØ¾ß ÇÕ´Ï´Ù. ÀÌ °ªÀº ±×·¯¸é È£ÃâÀÚ¿¡°Ô ¹ÝȯµË´Ï´Ù. ¿ÀÅäÇÖÅ° 32-ºñÆ®´Â ¹Ýȯ °ªÀ» 32-ºñÆ®·Î À߶ó³À´Ï´Ù. ¹Ý¸é¿¡ ¿ÀÅäÇÖÅ° 64-ºñÆ®´Â 64-ºñÆ® ¹Ýȯ°ªÀ» Áö¿øÇÕ´Ï´Ù. ÀÌ º¸´Ù Å« °ªÀ» (°ªÀ¸·Î) ¹ÝȯÇÏ´Â °ÍÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
±âº»/´À¸®°Ô ¸ðµå¿¡¼ ÇÔ¼ö´Â SendMode ±×¸®°í DetectHiddenWindows¿Í °°Àº ¼³Á¤¿¡ ´ëÇÏ¿© ±âº» °ªÀ¸·Î »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªµéÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù .
´ëÁ¶ÀûÀ¸·Î, ºü¸¥ ¸ðµå´Â ÇÔ¼ö°¡ È£ÃâµÇ´Â ¼ø°£¿¡ ¿ì¿¬ÇÏ°Ô ½ÇÇàÁßÀÎ ¾²·¹µå·ÎºÎÅÍ Àü¿ª ¼³Á¤À» ¹°·Á¹Þ½À´Ï´Ù. °Ô´Ù°¡, ÇÔ¼ö°¡ Àü¿ª ¼³Á¤¿¡ °¡ÇÏ´Â ¸ðµç º¯°æÀº (ErrorLevel ±×¸®°í ¸¶Áö¸·À¸·Î-¹ß°ßµÈ âÀ» Æ÷ÇÔÇÏ¿©) ÇöÀç ¾²·¹µå ¾ÈÀ¸·Î ¿µÇâÀ» ÁÝ´Ï´Ù. °á°úÀûÀ¸·Î, ºü¸¥ ¸ðµå´Â Á¤È®ÇÏ°Ô ¾î´À ¾²·¹µå·ÎºÎÅÍ ÇÔ¼ö°¡ È£ÃâµÇ´ÂÁö ¾Ë °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
ÀÚ±â ÀڽŠ(¶Ç´Â ´Ù¸¥ ¾²·¹µå)·ÎºÎÅÍ ÀÎÅÍ·´Æ®µÇÁö ¾ÊÀ¸·Á¸é, ¿ªÈ£ÃâÇÔ¼ö´Â ÀÚ½ÅÀÇ Ã¹ ÁÙ¿¡ ÀÓ°è°ª(Critical)À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀÌ ¿ÏÀüÇÏ°Ô È¿°ú°¡ ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÇÔ¼ö°¡ 0x312 º¸´Ù ÀÛÀº ¸Þ½ÃÁöÀÇ µµÂøÀ» ÅëÇÏ¿© °£Á¢ÀûÀ¸·Î È£ÃâµÉ ¶§´Â È¿·ÂÀ» ¹ÌÄ¡Áö ¸øÇÕ´Ï´Ù (CriticalÀÇ °£°ÝÀ» Áõ°¡½ÃÅ°¸é µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù). °Ô´Ù°¡, ÀÓ°è°ª(Critical)À¸·Î´Â ÇÔ¼ö°¡ °£Á¢ÀûÀ¸·Î ÀÚ½ÅÀ» È£ÃâÇÏ´Â °á°ú°¡ µÇ´Â °ÍÀ» ¸·Áö ¸øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î SendMessageÀ̳ª DllCall¸¦ È£ÃâÇÏ´Â °ÍÀ» ¸·À» ¼ö ¾ø½À´Ï´Ù.
RegisterCallback()À» »ç¿ëÇÒ ¶§¸¶´Ù ÀÛÀº ¸Þ¸ð¸®°¡ ÇÒ´çµË´Ï´Ù (32 ¹ÙÀÌÆ®¿¡´Ù ¾à°£ÀÇ ½Ã½ºÅÛ ¿À¹öÇìµå). OS´Â ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ ÀÌ ¸Þ¸ð¸®¸¦ ÀÚµ¿À¸·Î ÇØÁ¦Çϱ⠶§¹®¿¡ , ½ºÅ©¸³Æ®°¡ ÀÛÀº, °íÁ¤ °³¼öÀÇ ¿ªÈ£ÃâÀ» µî·ÏÇÑ´Ù¸é ¸í½ÃÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ½ºÅ©¸³Æ®°¡ RegisterCallback()À» ¹«Á¦ÇÑ/³¡¾øÀÌ È£ÃâÇÑ´Ù¸é ¸í½ÃÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ »ç¿ëµÇÁö ¾Ê´Â ¿ªÈ£Ãâ ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù:
DllCall("GlobalFree", "Ptr", Address, "Ptr")
DllCall(), OnMessage(), OnExit, OnClipboardChange, SortÀÇ ¿ªÈ£Ãâ, Critical, Post/SendMessage, ÇÔ¼ö, À©µµ¿ìÁî ¸Þ½ÃÁö ¸®½ºÆ®, ¾²·¹µå
; ¿¹Á¦: ´ÙÀ½ ¿¹Á¦´Â ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®·Î¼ ¸ðµç ÃÖ»óÀ§ âÀÇ Á¤º¸¸¦ ¿ä¾àÇØ º¸¿©ÁÝ´Ï´Ù. ; ¼öÇ༺´É°ú ¸Þ¸ð¸® º¸ÀüÀ» À§ÇØ, ÁÖ¾îÁø ¿ªÈ£Ãâ¿¡ ´ëÇؼ RegisterCallback()À» ÇÑ ¹ø¸¸ È£ÃâÇÕ´Ï´Ù: if not EnumAddress ; ºü¸¥-¸ðµå´Â ÀÌ ¾²·¹µå¿¡¼¸¸ È£ÃâµÇ±â ¶§¹®¿¡ ±¦Âú½À´Ï´Ù: EnumAddress := RegisterCallback("EnumWindowsProc", "Fast") DetectHiddenWindows On ; ºü¸¥ ¸ðµå ¶§¹®¿¡, ÀÌ ¼³Á¤Àº ¿ªÈ£Ãâ¿¡°Ôµµ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ; Á¦¾î¸¦ EnumWindows()¿¡°Ô °Ç³Ü´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¹Ýº¹ÀûÀ¸·Î ¿ªÈ£ÃâÀ» È£ÃâÇÕ´Ï´Ù: DllCall("EnumWindows", Ptr, EnumAddress, Ptr, 0) MsgBox %Output% ; ¿ªÈ£ÃâÀÌ ÃàÀûÇÑ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù. EnumWindowsProc(hwnd, lParam) { global Output WinGetTitle, title, ahk_id %hwnd% WinGetClass, class, ahk_id %hwnd% if title Output .= "HWND: " . hwnd . "`tTitle: " . title . "`tClass: " . class . "`n" return true ; EnumWindows()¿¡°Ô ¸ðµç âÀÌ ¿°ÅµÉ ¶§±îÁö °è¼ÓÇ϶ó°í ¸í·ÉÇÕ´Ï´Ù. }
; ¿¹Á¦: ´ÙÀ½ ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®·Î¼ GUI âÀ» »ó¼Ó¹Þ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ; ±×ÀÇWindowProcÀ» ½ºÅ©¸³Æ®ÀÇ »õ WindowProcÀ¸·Î ¹æÇâ ÀüȯÇÕ´Ï´Ù. ; ÀÌ °æ¿ì, ÅؽºÆ® ÄÜÆ®·ÑÀÇ ¹è°æ»öÀº ¸ÂÃã »öÀ¸·Î ¹Ù²ò´Ï´Ù. TextBackgroundColor := 0xFFBBBB ; BGR Æ÷¸ËÀÇ ¸ÂÃã »ö. TextBackgroundBrush := DllCall("CreateSolidBrush", UInt, TextBackgroundColor) Gui, Add, Text, HwndMyTextHwnd, Here is some text that is given`na custom background color. Gui +LastFound GuiHwnd := WinExist() ; 64-ºñÆ® ½ºÅ©¸³Æ®´Â SetWindowLong ´ë½Å¿¡ SetWindowLongPtr¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù: SetWindowLong := A_PtrSize=8 ? "SetWindowLongPtr" : "SetWindowLong" WindowProcNew := RegisterCallback("WindowProc", "" ; ""¸¦ ÁöÁ¤ÇÏ¿© »ó¼ÓÀ» ¹Þ´Âµ¥ ºü¸¥-¸ðµå¸¦ ȸÇÇÇÕ´Ï´Ù. , 4, MyTextHwnd) ; EventInfo ¸Å°³º¯¼ö°¡ Á¸ÀçÇϸé Á¤È®ÇÏ°Ô ParamCount¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. WindowProcOld := DllCall(SetWindowLong, Ptr, GuiHwnd, Int, -4 ; -4 is GWL_WNDPROC , Ptr, WindowProcNew, Ptr) ; ¹Ýȯ°ªÀº Ptr ¶Ç´Â UPtr vs. IntÀ¸·Î ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. Gui Show return WindowProc(hwnd, uMsg, wParam, lParam) { Critical global TextBackgroundColor, TextBackgroundBrush, WindowProcOld if (uMsg = 0x138 && lParam = A_EventInfo) ; 0x138 is WM_CTLCOLORSTATIC. { DllCall("SetBkColor", Ptr, wParam, UInt, TextBackgroundColor) return TextBackgroundBrush ; HBRUSHÀ» µ¹·ÁÁÖ¾î OS¿¡°Ô HDC¸¦ º¯°æÇß´Ù°í ¾Ë¸³´Ï´Ù. } ; ±×·¸Áö ¾ÊÀ¸¸é (À§°¡ ¹ÝȯµÇÁö ¾Ê¾Ò±â ¶§¹®¿¡), 󸮵ÇÁö ¾ÊÀº ¸ðµç À̺¥Æ®¸¦ ¿ø·¡ÀÇ WindowProc¿¡ °Ç³Ü´Ï´Ù. return DllCall("CallWindowProc", Ptr, WindowProcOld, Ptr, hwnd, UInt, uMsg, Ptr, wParam, Ptr, lParam) } GuiClose: ExitApp