如何使用WinIo模拟鼠标移动到指定位置? 50
不使用SetCursorPos,直接利用WinIo向鼠标的硬件端口发送数据包来模拟鼠标的移动,并使鼠标移动到屏幕的指定位置(象素坐标),关于鼠标的移动我已经掌握:鼠标会发...
不使用SetCursorPos,直接利用WinIo向鼠标的硬件端口发送数据包来模拟鼠标的移动,并使鼠标移动到屏幕的指定位置(象素坐标),关于鼠标的移动我已经掌握:鼠标会发送位移和按键信息数据包给主机,例如五键带滚轮鼠标的数据包格式如下:
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
┌————┬————┬————┬————┬——┬———┬———┬———┐
Byte 1 │Y 溢出位│X 溢出位│Y 符号位│X 符号位│置 1│中键位│右键位│左键位│
├————┴————┴————┴————┴——┴———┴———┴———┤
Byte 2 │ X 左右移位值,补码 │
├——————————————————————————————————┤
Byte 3 │ Y 上下移位值,补码 │
├————┬————┬————┬————┬——┬———┬———┬———┤
Byte 4 │ 置 0 │ 置 0 │第5键位 │第4键位 │ Z3 │ Z2 │ Z1 │ Z0 │
└————┴————┴————┴————┴——┴———┴———┴———┘
现在的问题是:鼠标的位移量同鼠标指针在屏幕上的象素位移量并不一样,这跟鼠标移动速度的设置有关,设置的值保存在注册表HKEY_CURRENT_USER\Control Panel\Mouse\MouseSensitivity中,例如我的电脑上该值设为10,鼠标位移量同象素位移量的比较如下:
n, cX, cY
1, 1, 1
2, 2, 2
3, 3, 3
4, 4, 4
5, 5, 5
6, 6, 6
7, 14, 14
8, 16, 16
9, 18, 18
10, 20, 20
11, 22, 22
12, 24, 24
13, 26, 26
14, 28, 28
15, 30, 30
16, 32, 32
17, 34, 34
18, 36, 36
19, 38, 38
20, 40, 40
21, 42, 42
22, 44, 44
23, 46, 46
24, 48, 48
25, 50, 50
26, 52, 52
27, 54, 54
28, 56, 56
29, 58, 58
30, 60, 60
当鼠标移动速度的设置不同时,鼠标位移量同象素位移量的比值也不同,我现在想知道如何根据象素的位移量换算出鼠标的位移量? 展开
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
┌————┬————┬————┬————┬——┬———┬———┬———┐
Byte 1 │Y 溢出位│X 溢出位│Y 符号位│X 符号位│置 1│中键位│右键位│左键位│
├————┴————┴————┴————┴——┴———┴———┴———┤
Byte 2 │ X 左右移位值,补码 │
├——————————————————————————————————┤
Byte 3 │ Y 上下移位值,补码 │
├————┬————┬————┬————┬——┬———┬———┬———┤
Byte 4 │ 置 0 │ 置 0 │第5键位 │第4键位 │ Z3 │ Z2 │ Z1 │ Z0 │
└————┴————┴————┴————┴——┴———┴———┴———┘
现在的问题是:鼠标的位移量同鼠标指针在屏幕上的象素位移量并不一样,这跟鼠标移动速度的设置有关,设置的值保存在注册表HKEY_CURRENT_USER\Control Panel\Mouse\MouseSensitivity中,例如我的电脑上该值设为10,鼠标位移量同象素位移量的比较如下:
n, cX, cY
1, 1, 1
2, 2, 2
3, 3, 3
4, 4, 4
5, 5, 5
6, 6, 6
7, 14, 14
8, 16, 16
9, 18, 18
10, 20, 20
11, 22, 22
12, 24, 24
13, 26, 26
14, 28, 28
15, 30, 30
16, 32, 32
17, 34, 34
18, 36, 36
19, 38, 38
20, 40, 40
21, 42, 42
22, 44, 44
23, 46, 46
24, 48, 48
25, 50, 50
26, 52, 52
27, 54, 54
28, 56, 56
29, 58, 58
30, 60, 60
当鼠标移动速度的设置不同时,鼠标位移量同象素位移量的比值也不同,我现在想知道如何根据象素的位移量换算出鼠标的位移量? 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询