[AutoHotkey] 포스트메세지(예시)

사용법은 쉽습니다.
키값을 알아낸후 wParam 과 lParam 에 대입해서 쓰시면 됩니다.
 
F2::
SendMode, Event   ; AHK Send를 Default 선언
PostMessage, 0x100, wParam, lParam,, WinTitle      ;키를 누름
sleep, 100
PostMessage, 0x101, wParam, lParam,, WinTitle      ; 키를 땜
return
 
/*
식 스크립트
dnstlr14@naver
*/
A_title = Keycode Helper      만든이 : 식
Gui,Color, e0e0e0
Gui,font, s11 bold, verdana
Gui,Add,Text, x5 y5 +center , 알고싶은 키를 눌러주세요
 
Gui,Add,Text, x0 yp+20 w80 R1 vA_Lastkey +center , None
 
Gui,Add,Edit, xp yp+35 w150 R1  vw_param +ReadOnly +Center, None
Gui,Add,Text, xp+155 yp g_flagA, wParam
 
Gui,Add,Edit, x0 yp+35 w150 R1  vl_param +ReadOnly +Center , None
Gui,Add,Text, xp+155 yp g_flagB, lParam
 
Gui,Add,Edit, x0 yp+35 w350 vA_pmsg +ReadOnly +Center , `PostMessage`, `wParam, `lParam`,`, WinTitle
 
Gui,Add,Edit, x0 yp+35 w150 R1 vEdit_SCAN +ReadOnly +Center , None
Gui,Add,Text,xp+155 yp , SCAN Code
Gui,show , w350 h270, % A_title
;OnMessage = 리시브 메세지
OnMessage(0x100, "WM_KEYDOWN")        ;0x100 = WM_KEYDOWN
OnMessage(0x200, "WM_MOUSEFIRST")   ;0x200 = WM_MOUSEFIRST
Return
 
_flagA:
_flagB:
gui,submit,nohide
clipboard =                              ;클립보드 내용 비움 (Empty Clipboard)
if (A_ThisLabel == "_flagA")
clipboard = %w_param%
else if (A_ThisLabel == "_flagB")
clipboard = %l_param%
msgbox, 64, 알림, 완료 되었습니다. , 0.7
return
 
F3::
guiclose:
ExitApp
;================ F u n t i o n =======================
; Function                       WM_KEYDOWN
; Description                   키를 누르면 WM_KEYDOWN 메세지를 받는다
WM_KEYDOWN(wParam, lParam)
{
 Guicontrol,, A_Lastkey, % A_LastKey(wParam) ; 마지막으로 누른키를 guicontrol
 Guicontrol,, w_param, %wParam%
 Guicontrol,, l_param, %lParam%
 Guicontrol,, A_pmsg, `PostMessage`, %wParam%`, %lParam%`,`, WinTitle
 Guicontrol,, Edit_SCAN, % ((lParam>>16) & ((1<<12)-1))
}
 
 
; Function                       WM_MOUSEFIRST
; Description                   The receive WM_MOUSEFIRST Message.
; 한글 디스크립션             WM_MOUSEFIRST 메세지를 받는다
WM_MOUSEFIRST()
{
gui,submit,nohide
    mousegetpos,,,, hHwnd
tooltip,% hHwnd="Static3" ? "wParam 입니다. `n`n만약 복사를 원한다면 클릭해주세요"
: hHwnd="Static4" ? "lParam 입니다. `n`n만약 복사를 원한다면 클릭해주세요"
: hHwnd="Static2" ? "알고싶은 키를 눌러주세요":""
}
 
; Function                       A_LastKey
; Description                   마지막으로 누른 키의 이름을 얻는다.
A_LastKey(vk)
{
  VarSetCapacity(sik, 256, 0)
  sc := (DllCall("MapVirtualKey", "Uint", vk, "Uint", 0, "Uint")<<16) | (0x1<<25)
    if (!((vk<=32) ? 1 : ((vk!=0x6F) ? DllCall("ToAscii", "Uint", vk, "uint", sc, "ptr", &sik, "ushort*", tmp, "Uint", 1) : 0)))
      sc |= 0x1<<24
      DllCall("GetKeyNameTextW", "Uint", sc, "Ptr", &sik, "Int", 128)
      return StrGet(&sik, 128, "utf-16")
}