首页
社区
课程
招聘
USB 鼠标模拟的坐标一直不准,请教.
发表于: 2011-6-30 23:49 6712

USB 鼠标模拟的坐标一直不准,请教.

2011-6-30 23:49
6712
代码是看雪上下载的那个 模拟USB鼠标的 ,用MouseClassServiceCallback的函数.

我的分辨率是1280*800
但是我用
IOCTL_MOUSE_MOVE_ABSOLUTE
设置坐标100,100.
结果几乎移动到屏幕0,0处了.

坐标1000,1000.
移动到19,12的位置

IOCTL_MOUSE_MOVE_RELATIVE
用这个的话,正向移动没问题,也就是说LastX,LastY多大于零的时候.
当反响就有问题了....LastX,LastY,同时小于某个值的时候,就移动到0,0处了...
不知道为什么呢?

请教...
谢谢.

部分代码如下:
	case IOCTL_MOUSE_MOVE_RELATIVE:
		{
			mid.Flags = MOUSE_MOVE_RELATIVE;	//相对坐标
			goto __MouseMoveCallBack;
		}
	case IOCTL_MOUSE_MOVE_ABSOLUTE:
		{
			mid.Flags = MOUSE_MOVE_ABSOLUTE;	//绝对坐标
			goto __MouseMoveCallBack;
		}
	case IOCTL_MOUSE_VIRTUAL_DESKTOP:
		{
			mid.Flags = MOUSE_VIRTUAL_DESKTOP;	//虚拟桌面
__MouseMoveCallBack:
			mid.UnitId = 1;		
			mid.Buttons = 0;

			mid.RawButtons = 0;
			mid.LastX = *((ULONG*)ioBuf);
			mid.LastY = *((ULONG*)ioBuf+1);
			mid.ExtraInformation = 0;

			InputDataStart = ∣
			InputDataEnd = InputDataStart+1;

			orig_MouseClassServiceCallback(
			g_mouDeviceObject,
			InputDataStart,
			InputDataEnd,
			&InputDataConsumed
			);
			status = STATUS_SUCCESS;
			break;
		}

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
不管分辨率,你把屏幕看成65535*65535的试试。
例如1280*800桌面分辨率,要移动到100,100

x=y=100*65535/1280

试试^_^
2011-7-1 00:08
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
X=100*65535/1280
Y=100*65535/800
2011-7-1 00:10
0
雪    币: 3800
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主快试下楼上的方法行不行
2011-7-1 00:49
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我昨晚试了,看看坐标1的对应的值是多少。。。
结果显示:
x:
52=1
103=2
154=3
205=4
个像素。

经测试,这个K值约等于 51.283025......

Y:
y比较固定。基本上是
82=1个像素
也就是说K值约等于82
但是到700多以上像素的话,就不准了。。。可能后面有很多小数点的缘故,我没计算出来。

不知道为什么。连相对坐标也不能很好的处理。
本想绝对坐标不行,我用鼠标当前坐标 - 输入坐标,即可得到绝对坐标。。。
问题现象,就如上面所说的。
2011-7-1 08:24
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
果然是黄色闪光...
2011-7-1 19:30
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不过我模拟键盘(笔记本估计是ps2键盘,因为Winio可以模拟),直接蓝屏了。比如模拟数字键'1',
scancode是2。使用下就蓝屏。不过在虚拟机上没问题。。。
请教这个有什么东西影响了吗?
OS:全部是 XP Sp3
2011-7-22 09:07
0
游客
登录 | 注册 方可回帖
返回