PostMessage / SendMessage

¸Þ½ÃÁö¸¦ âÀ̳ª ÄÜÆ®·Ñ¿¡ º¸³À´Ï´Ù (SendMessage´Â ½ÂÀÎÀ» ±â´Ù¸³´Ï´Ù).

PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]

¸Å°³º¯¼ö

Msg

Àü¼ÛÇÒ ¸Þ½ÃÁö ¹øÈ£, Ç¥Çö½Ä°¡´É. ¼ýÀÚ¸¦ ¾Ë¾Æ ³»·Á¸é ¸Þ½ÃÁö ¸ñ·ÏÀ» ÂüÁ¶ÇϽʽÿÀ.

wParam

¸Þ½ÃÁöÀÇ Ã¹ ¹ø° ±¸¼º¿ä¼Ò. Ç¥Çö½Ä °¡´É. ºñ¾î Àְųª »ý·«Çϸé 0ÀÌ Àü¼ÛµË´Ï´Ù.

lParam

¸Þ½ÃÁöÀÇ µÎ ¹ø° ±¸¼º¿ä¼Ò. Ç¥Çö½Ä °¡´É. ºñ¾î Àְųª »ý·«Çϸé 0ÀÌ Àü¼ÛµË´Ï´Ù.

Control

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾îÀְųª »ý·«µÇ¸é, ¸Þ½ÃÁö´Â ±×ÀÇ ÄÜÆ®·Ñ Áß¿¡ Çϳª°¡ ¾Æ´Ï¶ó Á÷Á¢ ¸ñÇ¥ â¿¡ Àü¼ÛµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼ö´Â ClassNN (Ŭ·¡½ºÀ̸§°ú ÄÜÆ®·ÑÀÇ ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù.

ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)À» ó¸®ÇÏ·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºñ¿ö µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº â¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־(Off) ¸¶Âù°¡ÁöÀÔ´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCall¸¦ ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

WinTitle

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

WinText

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß(ON) ŽÁöµË´Ï´Ù.

ExcludeTitle

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

ExcludeText

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

Timeout

[AHK_L 42+]: ¸ñÇ¥ âÀÌ ¸Þ½ÃÁö¸¦ ó¸®Çϱ⸦ ±â´Ù¸± ¹Ð¸®ÃÊÀÇ ÃÖ´ë °³¼ö. »ý·«ÇÏ¸é ±âº»°ªÀº 5000 (¹Ð¸®ÃÊ)ÀÔ´Ï´Ù. ÀÌ °ªÀº ÀÌ ¸Å°³º¯¼ö¸¦ Áö¿øÇÏÁö ¾Ê¾Ò´ø ¿¹Àü ¹öÀüÀÇ AutoHotkey¿¡¼­ ±âº»°ªÀÔ´Ï´Ù. ¸Þ½ÃÁö°¡ ÀÌ ½Ã°£ ¾È¿¡ 󸮵ÇÁö ¾ÊÀ¸¸é, ¸í·É¾î´Â ³¡³ª°í ErrorLevel¿¡ ´Ü¾î FAILÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

ErrorLevel

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

PostMessage: ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1ÀÌ ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¾î ¸ñÇ¥ âÀ̳ª ÄÜÆ®·ÑÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

SendMessage: ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾ú°Å³ª ½Ã°£Á¦ÇÑ¿¡ °É¸®¸é ´Ü¾î FAILÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¸Þ½ÃÁöÀÇ ¼ýÀÚ °ª °á°ú°¡ ¼³Á¤µË´Ï´Ù. °¡²û ÀÌ °ªÀÌ ¸Þ½ÃÁö¿Í ±×ÀÇ ¸ñÇ¥ âÀÇ ¼ºÁú¿¡ µû¶ó "reply"ÀÏ °æ¿ì°¡ ÀÖ½À´Ï´Ù.

°¡´ÉÇÑ °ªÀÇ ¹üÀ§´Â ¿ÀÅäÇÖÅ°ÀÇ ¹öÀü°ú ¸ñÇ¥ â¿¡ µû¶ó ´Ù¸¨´Ï´Ù. 32-ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¸¦ »ç¿ëÇϰųª, ¶Ç´Â ¸ñÇ¥ âÀÌ 32-ºñÆ®À̸é, ±× °á°ú´Â 0ºÎÅÍ 4294967295 ±îÁöÀÇ 32-ºñÆ® ¹«ºÎÈ£ Á¤¼öÀÔ´Ï´Ù. 64-ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¸¦ 64-ºñÆ® â¿¡ »ç¿ëÇϸé, ±× °á°ú´Â -9223372036854775808°ú 9223372036854775807 ±îÁöÀÇ 64-ºñÆ® ºÎÈ£ÀÖ´Â Á¤¼öÀÔ´Ï´Ù .

°á°ú°¡ 32-ºñÆ® ºÎÈ£ ÀÖ´Â Á¤¼öÀ̱⸦ ¿øÇÑ´Ù¸é (-2147483648ºÎÅÍ 2147483648±îÁöÀÇ °ª), ´ÙÀ½°ú °°ÀÌ 32-ºñÆ®·Î Àß¶ó³»°í ºÎÈ£ÀÖ´Â °ªÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù:

MsgReply := ErrorLevel << 32 >> 32

ÀÌ º¯È¯Àº AutoHotkey 64-ºñÆ®¿¡¼­µµ ÇÊ¿äÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé, 32-ºñÆ® âÀ¸·ÎºÎÅÍÀÇ °á°ú´Â È®ÀåµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, 32-ºñÆ® âÀ¸·ÎºÎÅÍÀÇ °á°ú°¡ -1ÀÌ¸é ¾î´À ¿ÀÅäÇÖÅ° ¹öÀü¿¡¼­µµ 0xFFFFFFFFÀ¸·Î º¸ÀÔ´Ï´Ù. ¹Ý¸é¿¡ 64-ºñÆ® âÀ¸·ÎºÎÅÍÀÇ °á°ú°¡ -1À̸é 32ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿¡¼­´Â 0xFFFFFFFFÀ¸·Î º¸ÀÌ°í 64ºñÆ® ¹öÀü¿¡¼­´Â -1·Î º¸ÀÔ´Ï´Ù.

³íÆò

ÀÌ ¸í·É¾îµéÀº ÁÖÀÇÇؼ­ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾û¶×ÇÑ Ã¢¿¡ ¸Þ½ÃÁö¸¦ Àü¼ÛÇϸé (¶Ç´Â ¹«È¿ÇÑ ¸Þ½ÃÁö¸¦ Àü¼ÛÇϸé) ¿¹»óÄ¡ ¸øÇÑ ÇàÀ§¸¦ ¾ß±âÇÏ°Ô µÇ°í ½ÉÁö¾î ¸ñÇ¥ ¾îÇø®ÄÉÀ̼ÇÀÌ Ãæµ¹À» ÀÏÀ¸Å³ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ¾îÇø®ÄÉÀ̼ÇÀº ¿ÜºÎ ¼Ò½º·ÎºÎÅÍ ¾î¶² À¯ÇüÀÇ ¸Þ½ÃÁö¸¦ ¹Þµµ·Ï ¼³°èµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.

PostMessage´Â ¸Þ½ÃÁö¸¦ ¸ñÇ¥ â¿¡ ¿¬°üµÈ ¸Þ½ÃÁö Å¥¿¡ ³Ö½À´Ï´Ù. ½ÂÀÎÀ̳ª ÀÀ´äÀ» ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, SendMessage´Â ¸ñÇ¥ âÀÌ ±× ¸Þ½ÃÁö¸¦ ó¸®Çϱ⸦ ½Ã°£Á¦ÇÑ¿¡ °É¸± ¶§±îÁö ±â´Ù¸³´Ï´Ù.

wParam°ú lParam ¸Å°³º¯¼ö´Â Á¤¼ö¿©¾ß ÇÕ´Ï´Ù. AutoHotkey ¶Ç´Â ¸ñÇ¥ âÀÌ 32-ºñÆ®À̸é, ¿ÀÁ÷ ¾Æ·¡ÀÇ 32 ºñÆ®¸¸ »ç¿ëµË´Ï´Ù; Áï, °ªÀº ¹üÀ§°¡ -2147483648°ú 4294967295 (0xFFFFFFFF) »çÀÌÀÔ´Ï´Ù. ¿ÀÅäÇÖÅ°¿Í ¸ñÇ¥ âÀÌ ¸ðµÎ 64-ºñÆ®À̸é, ¿ÀÅäÇÖÅ°°¡ Áö¿øÇÏ´Â ¾î¶² Á¤¼öµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÅäÇÖÅ°ÀÇ ¸ðµç Á¤¼ö °ªÃ³·³, Á¢µÎ»ç°¡ 0xÀÌ¸é ½ÊÀ°Áø¼ö¸¦ ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î 0xFF´Â 255¿Í µ¿µîÇÕ´Ï´Ù.

¹®ÀÚ¿­Àº º¯¼öÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤Çϸé wParam ¶Ç´Â lParamÀ» ÅëÇÏ¿© Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ÁÖ¼Ò ¿¬»êÀÚ (&)¸¦ »ç¿ëÇØ Àü¼ÛÇÕ´Ï´Ù:

SendMessage, 0xC, 0, &MyVar, ClassNN, WinTitle  ; 0XC is WM_SETTEXT

v1.0.43.06+¿¡¼­, ¸Þ½ÃÁö ¼ö½ÅÀÚ¿¡ ÀÇÇÏ¿© MyVar ¾È¿¡ ¹èÁ¤µÈ ¹®ÀÚ¿­Àº º°µµÀÇ Ãß°¡ ÀýÂ÷ ¾øÀÌ ÀûÀýÇÏ°Ô ÀÎÁöµË´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀº ¸Å°³º¯¼öÀÇ Ã¹ ¹®ÀÚ°¡ ¾ÚÆÛ¼¾µå (&)ÀÏ °æ¿ì¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, 5+&MyVar´Â ÀÛµ¿ÇÏÁö ¾ÊÁö¸¸ &MyVar ¶Ç´Â &MyVar+5´Â ÀÛµ¿ÇÕ´Ï´Ù.

ÀοëºÎÈ£ 󸮵È/±âÈ£ ±×´ë·ÎÀÇ ¹®ÀÚ¿­µµ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù (& ¿¬»êÀÚ´Â ÀÌ °æ¿ì »ç¿ëÇÏ¸é ¾È µË´Ï´Ù):

Run Notepad
WinWait Untitled - Notepad
SendMessage, 0xC, 0, "New Notepad Title"  ; 0XC is WM_SETTEXT

¸Þ½ÃÁö Çϳª¸¦ ¼û¾î ÀÖµç ºñÈ°¼ºÈ­µÇ¾î ÀÖµç ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç â¿¡ º¸³»·Á¸é, ahk_id 0xFFFF¸¦ WinTitle (0xFFFF´Â HWND_BROADCASTÀÓ)¿¡ ÁöÁ¤ÇϽʽÿÀ. ÀÌ Å×Å©´ÐÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹æ¼Û¿ë ÀǵµÀÇ ¸Þ½ÃÁö¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù:

SendMessage, 0x1A,,,, ahk_id 0xFFFF  ; 0x1A is WM_SETTINGCHANGE

½ºÅ©¸³Æ®°¡ ¸Þ½ÃÁö¸¦ ¹Þµµ·Ï ÇÏ·Á¸é OnMessage()¸¦ »ç¿ëÇϽʽÿÀ.

ÀÌ ¸í·É¾îµåµéÀ» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ¼Ò°³´Â ¸Þ½ÃÁö ÀÚ½À¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

°ü·Ã Ç׸ñ

Message List, Message Tutorial, OnMessage(), Automating Winamp, DllCall, ControlSend, WinMenuSelectItem

¿¹Á¦

#o::  ; ¸ð´ÏÅ͸¦ ²ø Win+O ÇÖÅ°.
Sleep 1000  ; »ç¿ëÀÚ¿¡°Ô Å°¸¦ ¶¿ ±âȸ¸¦ ÁÝ´Ï´Ù (Å°¸¦ ¶¼¸é ¸ð´ÏÅÍ°¡ ´Ù½Ã ²¡´Ï´Ù).
; Turn Monitor Off:
SendMessage, 0x112, 0xF170, 2,, Program Manager  ; 0x112´Â WM_SYSCOMMANDÀÌ°í, 0xF170´Â SC_MONITORPOWERÀÔ´Ï´Ù.
; À§¿¡ ÁÖ¸ñÇϽʽÿÀ: 2 ´ë½Å¿¡ -1À» »ç¿ëÇÏ¸é ¸ð´ÏÅÍ°¡ ÄÑÁý´Ï´Ù.
; 2 ´ë½Å¿¡ 1À» »ç¿ëÇÏ¸é ¸ð´ÏÅÍÀÇ ÀúÀü·Â ¸ðµå°¡ ÄÑÁý´Ï´Ù.
return

; »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ È­¸é º¸È£±â¸¦ ½ÃÀÛÇÕ´Ï´Ù:
SendMessage, 0x112, 0xF140, 0,, Program Manager  ; 0x112´Â WM_SYSCOMMANDÀÌ°í, 0xF140´Â SC_SCREENSAVEÀÔ´Ï´Ù.

; ÇÑ ÁÙ À§·Î °¨½À´Ï´Ù (¼öÁ÷ ½ºÅ©·Ñ ¹Ù°¡ ÀÖ´Â ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©):
ControlGetFocus, control, A
SendMessage, 0x115, 0, 0, %control%, A

; ÇÑ ÁÙ ¾Æ·¡·Î °¨½À´Ï´Ù:
ControlGetFocus, control, A
SendMessage, 0x115, 1, 0, %control%, A

; È°¼º âÀÇ Å°º¸µå ·¹À̾ƿô/¾ð¾î¸¦ ¿µ¾î·Î ÀüȯÇÕ´Ï´Ù:
PostMessage, 0x50, 0, 0x4090409,, A  ; 0x50Àº WM_INPUTLANGCHANGEREQUESTÀÔ´Ï´Ù.

; ÀÌ ¿¹Á¦´Â Winamp¿¡°Ô ÇöÀç È°¼ºÈ­µÇ¾î ÀÖ´Â Æ®·¢ ¹øÈ£¸¦ ¹°¾îº¾´Ï´Ù:
SetTitleMatchMode, 2
SendMessage, 1024, 0, 120, - Winamp
if ErrorLevel <> FAIL
{
    ErrorLevel++  ; WinampÀÇ Ä«¿îÆ®´Â "0"¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. ±×·¡¼­ 1·Î Á¶Á¤ÇÕ´Ï´Ù.
    MsgBox, Track #%ErrorLevel% is active or playing.
}
; ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Winamp ÀÚµ¿È­ Çϱ⸦ ÂüÁ¶ÇϽʽÿÀ.

; AHK ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º ID¸¦ ã±â À§ÇØ ("WinGet PID"¿¡ ´ëÇÑ ´ë¾È):
SetTitleMatchMode, 2
DetectHiddenWindows, on
SendMessage, 0x44, 0x405, 0, , SomeOtherScript.ahk - AutoHotkey v
MsgBox %ErrorLevel% is the process id.