> ÂçÉÙ¹ë ¤µ¤ó
´ØÏ¢¤·¤¿À©ºî¤ò¤·¤¿¤³¤È¤¬¤¢¤ê¤Þ¤·¤¿¤Î¤Ç¥³¥á¥ó¥È¤µ¤»¤ÆÄº¤¤Þ¤¹¡£
Ê£¿ô¥Þ¥¦¥¹¤ÎºÂɸ¼èÆÀ¤Ï Win32API¤ÎRawÆþÎϥǥХ¤¥¹´Ø¿ô¤Ç¼Â¸½¤Ç¤¤Þ¤¹¡£
¼êË¡¤È¤·¤Æ¤Ï¡¢zakki ¤µ¤ó¤Î¸À¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤¹¤Ù¤Æ¤Ç¤·¤Æ¡¢
WM_INPUT ¥á¥Ã¥»¡¼¥¸¤Ë¤Æ¼èÆÀ¤Ç¤¤ë¥Þ¥¦¥¹¥Ç¥Ð¥¤¥¹¤Î¥Ï¥ó¥É¥ëÃͤò
Ä´¤Ù¤ë¤³¤È¤Ç¡¢¤É¤Î¥Þ¥¦¥¹¤ÎÆþÎϥǡ¼¥¿¤Ê¤Î¤«¤òȽÃǶèÊ̤Ǥ¤Þ¤¹¡£
¥Þ¥¦¥¹¤ÎÆþÎϺÂɸ¥Ç¡¼¥¿¤ÏÁêÂÐ°ÜÆ°Î̤Ȥʤê¤Þ¤¹¡£
¥Þ¥¦¥¹¤´¤È¤ÎÀäÂкÂɸ¤Î¼èÆÀ¤Ë¤Ä¤¤¤Æ¤Ï»ä¤âÄ´ºº¤·¤Æ¤¤¤Þ¤·¤¿¤¬²ò·è¤·¤Æ¤¤¤Þ¤»¤ó¡£¡£
Windows¼«ÂΤ¬Àܳ¤µ¤ì¤¿¥Þ¥¦¥¹¤´¤È¤ËÀäÂкÂɸ¤ò¸ÄÊÌ´ÉÍý¤·¤Æ¤¤¤ë¤Î¤«¤âÉÔÌÀ¤Ç¤¹¡£
°Ê²¼¥µ¥ó¥×¥ë¤Ç¤Ï¡¢Èֹ桢¥Ï¥ó¥É¥ëÃÍ¡¢XYºÂɸ¡¢¥Ü¥¿¥ó¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£
XYºÂɸ¤ÏÁêÂкÂɸ¤ò²Ã¸º»»¤·¤¿ÃͤȤʤäƤ¤¤Þ¤¹¡£
¥¦¥£¥ó¥É¥¦¤¬¥¢¥¯¥Æ¥£¥Ö»þ¤Î¤ß¡¢¥Þ¥¦¥¹ÆþÎϽèÍý¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ÈºÂɸ¤ÏϢư¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç²èÌ̻Ͷù¤Ç»ß¤Þ¤Ã¤Æ¤â°ÜưÎ̤ÏÁý¸º¤µ¤ì¤Þ¤¹¡£
¥µ¥ó¥×¥ë¤Ç¤Ï»öÁ°¤Ë¥Þ¥¦¥¹Àܳ¿ô¤ò½èÍý¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡ÊWindows¥É¥é¥¤¥Ð·Ï¤Î½èÍý¤È¤Ê¤ë¡Ë
¿·¤¿¤ËÊ̤ʥޥ¦¥¹¤ÎÆþÎϡʥϥó¥É¥ë¡Ë¤¬¤¢¤ì¤Ðɽ¼¨¤¬Äɲäµ¤ì¤Æ¤¤¤¤Þ¤¹¡£
¤³¤ÎÊդ꤬ɬÍפǤ¢¤ì¤Ð¡¢GENKI ¤µ¤ó¤Î URLźÉÕ¤·¤Æ¤¤¤ë inovia¤µ¤ó¤Î SetupAPI¤Î½èÍý¤¬
»²¹Í¤Ë¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£
#uselib "user32"
#func RegisterRawInputDevices "RegisterRawInputDevices" int,int,int
#func GetRawInputData "GetRawInputData" int,int,int,int,int
#define WM_INPUT $00FF
#define RID_INPUT $10000003
#define MAX_MOUSE 16
dim hMo,MAX_MOUSE
dim moX,MAX_MOUSE:dim moY,MAX_MOUSE:dim moB,MAX_MOUSE
oncmd gosub *on_wminput,WM_INPUT
dim RIDEV,3
RIDEV.0=$01+($02<<16)
RIDEV.1=0 //0=¥¢¥¯¥Æ¥£¥Ö»þ¤Î¤ß/$100=¤¹¤Ù¤Æ
RIDEV.2=hwnd
RegisterRawInputDevices varptr(RIDEV),1,12
if stat==0:dialog "RID Error":end
repeat
redraw 0:color 255,255,255:boxf
color:pos 0,0
repeat mxMo
mes strf("%2d)$%08X:(%5d,%5d):$%08X",cnt+1,hMo.cnt,moX.cnt,moY.cnt,moB.cnt)
loop
redraw 1:await 1000/30
loop:stop
*on_wminput
GetRawInputData lparam,RID_INPUT,0,varptr(sz),16
if sz{
dim RIDDT,(sz>>2)+1
GetRawInputData lparam,RID_INPUT,varptr(RIDDT),varptr(sz),16
if stat>0{
hRid=RIDDT.2:setd=0
repeat MAX_MOUSE
if hMo.cnt==hRid:setd=1
if hMo.cnt==0:hMo.cnt=hRid:setd=1:mxMo++
if setd:moX.cnt+=RIDDT.7:moY.cnt+=RIDDT.8:moB.cnt=RIDDT.5:break
loop
}}
return