作者autumn12135 (剉冰加卤蛋)
看板C_Sharp
标题[问题] 控制滑鼠时的反应时间
时间Mon Sep 2 08:32:31 2013
最近程式上需要控制滑鼠
滑鼠也可实际动作了
但是假如我每隔10ms往右移动1px时 执行1秒後(100次)
并没有办法看到滑鼠很圆滑的往右移
而是只会看到他一次跳很大一格过去
把指令跟时间输出log 也会看到log跑了20~30行
滑鼠才一次往右跳移大格
目前是用这方法控制滑鼠的
有什麽办法让滑鼠移动不会卡卡的吗
[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.72.214.245
1F:→ fireslayer:在另外一个thread做这件事情 09/02 13:52
2F:→ henry10423:Async C# 09/02 17:44
3F:→ jenesis:因为UIthread只有一个呀 一直更新他绝对就是这样... 09/02 22:49
4F:推 Litfal:这跟UIThread没关系吧... 09/03 08:51
5F:→ Litfal:关键在於每10ms移动100次1px,跟一次移动100px有啥不同? 09/03 09:02
6F:→ autumn12135:因为user看起来会很明显觉得是lag 09/03 09:05
7F:→ autumn12135:在他们控制滑鼠时无法快速去点超连结或关闭视窗 09/03 09:11
8F:→ Litfal:想通并解决这个问题之後,你再来考虑另开Thread的问题就好 09/03 09:15
9F:→ Litfal:要不是我对原文理解错误,就是你没搞懂我的意思ˇˇ 09/03 09:29
10F:→ Litfal:你是100x(1px每10ms)还是(100x1px)每10ms? 09/03 09:33
11F:→ autumn12135:每隔10ms移动1px 说明不清楚不好意思 09/03 09:38
※ 编辑: autumn12135 来自: 211.72.214.245 (09/03 09:41)
12F:→ Litfal:移动途中没做其他的事?每10ms是怎麽做的?Sleep? 09/03 09:49
13F:→ autumn12135:另一个装置每隔10ms透过socket传1个指令让他往右移动 09/03 09:54
14F:→ autumn12135:收到後就执行SetCursorPos 然後输出log纪录时间跟位置 09/03 09:55
15F:→ autumn12135:看log时间间隔也大约是10ms 感觉不像是网路延迟 09/03 09:56
16F:→ autumn12135:同样装置同环境用java在mac上跑则是很顺 并没有这问题 09/03 09:59
17F:→ Litfal:有试过Cursor.Position吗?Receive是用非同步方法吗? 09/03 10:07
18F:→ autumn12135:Receive是用同步的 Cursor.Position没用过 我试试看 09/03 10:16
19F:→ Litfal:Log输出的位置也是一次跳一大格吗? 09/03 10:17
20F:→ autumn12135:log很顺的一直洗画面 每个指令差约2~20ms 09/03 10:28
21F:→ autumn12135:另一个比较奇怪的是 我把java那只拿到win7上跑 09/03 10:28
22F:→ autumn12135:滑鼠也会一样一次跳一格这样 09/03 10:29
23F:→ Litfal:你试试单纯用回圈配Thread.Sleep(10)正不正常 09/03 10:31
24F:→ autumn12135:不会耶 所以是我Receive那段有问题罗 09/03 10:40
25F:→ Litfal:可能是,你怎麽写的?封包的状态跟MAC上一样吗? 09/03 10:49
26F:→ autumn12135:阿..我好像想到某个很蠢的事情了 09/03 10:58
27F:→ autumn12135:我的win是用远端连的 我先去找台正常的NB来好了... 09/03 11:06
28F:→ autumn12135:找到NB测了 结果还是一样 09/03 11:13
29F:→ autumn12135:封包状态跟MAC上一样 怪的是MAC那只在WIN跑一样会跳 09/03 11:14
30F:→ Litfal:socket是TCP还是UDP?NoDelay有开吗?不过你说log正确,感 09/03 11:52
31F:→ Litfal:觉又不太像是封包的问题。 09/03 11:52
32F:→ autumn12135:在想是不是我电脑问题 把程式给其他人测试中 09/03 13:53
33F:→ sidetalker:可以贴出您Receive怎麽写的吗?是否有回圈不断polling 09/03 23:36