作者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