사용법은 쉽습니다.
키값을 알아낸후 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")
}
|