[問題] 控制滑鼠時會卡卡的

看板C_Sharp (C#)作者 (剉冰加滷蛋)時間12年前 (2013/09/02 08:32), 編輯推噓1(1032)
留言33則, 6人參與, 最新討論串1/1
最近程式上需要控制滑鼠 滑鼠也可實際動作了 但是假如我每隔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

09/02 13:52, , 1F
在另外一個thread做這件事情
09/02 13:52, 1F

09/02 17:44, , 2F
Async C#
09/02 17:44, 2F

09/02 22:49, , 3F
因為UIthread只有一個呀 一直更新他絕對就是這樣...
09/02 22:49, 3F

09/03 08:51, , 4F
這跟UIThread沒關係吧...
09/03 08:51, 4F

09/03 09:02, , 5F
關鍵在於每10ms移動100次1px,跟一次移動100px有啥不同?
09/03 09:02, 5F

09/03 09:05, , 6F
因為user看起來會很明顯覺得是lag
09/03 09:05, 6F

09/03 09:11, , 7F
在他們控制滑鼠時無法快速去點超連結或關閉視窗
09/03 09:11, 7F

09/03 09:15, , 8F
想通並解決這個問題之後,你再來考慮另開Thread的問題就好
09/03 09:15, 8F

09/03 09:29, , 9F
要不是我對原文理解錯誤,就是你沒搞懂我的意思ˇˇ
09/03 09:29, 9F

09/03 09:33, , 10F
你是100x(1px每10ms)還是(100x1px)每10ms?
09/03 09:33, 10F

09/03 09:38, , 11F
每隔10ms移動1px 說明不清楚不好意思
09/03 09:38, 11F
※ 編輯: autumn12135 來自: 211.72.214.245 (09/03 09:41)

09/03 09:49, , 12F
移動途中沒做其他的事?每10ms是怎麼做的?Sleep?
09/03 09:49, 12F

09/03 09:54, , 13F
另一個裝置每隔10ms透過socket傳1個指令讓他往右移動
09/03 09:54, 13F

09/03 09:55, , 14F
收到後就執行SetCursorPos 然後輸出log紀錄時間跟位置
09/03 09:55, 14F

09/03 09:56, , 15F
看log時間間隔也大約是10ms 感覺不像是網路延遲
09/03 09:56, 15F

09/03 09:59, , 16F
同樣裝置同環境用java在mac上跑則是很順 並沒有這問題
09/03 09:59, 16F

09/03 10:07, , 17F
有試過Cursor.Position嗎?Receive是用非同步方法嗎?
09/03 10:07, 17F

09/03 10:16, , 18F
Receive是用同步的 Cursor.Position沒用過 我試試看
09/03 10:16, 18F

09/03 10:17, , 19F
Log輸出的位置也是一次跳一大格嗎?
09/03 10:17, 19F

09/03 10:28, , 20F
log很順的一直洗畫面 每個指令差約2~20ms
09/03 10:28, 20F

09/03 10:28, , 21F
另一個比較奇怪的是 我把java那隻拿到win7上跑
09/03 10:28, 21F

09/03 10:29, , 22F
滑鼠也會一樣一次跳一格這樣
09/03 10:29, 22F

09/03 10:31, , 23F
你試試單純用迴圈配Thread.Sleep(10)正不正常
09/03 10:31, 23F

09/03 10:40, , 24F
不會耶 所以是我Receive那段有問題囉
09/03 10:40, 24F

09/03 10:49, , 25F
可能是,你怎麼寫的?封包的狀態跟MAC上一樣嗎?
09/03 10:49, 25F

09/03 10:58, , 26F
阿..我好像想到某個很蠢的事情了
09/03 10:58, 26F

09/03 11:06, , 27F
我的win是用遠端連的 我先去找台正常的NB來好了...
09/03 11:06, 27F

09/03 11:13, , 28F
找到NB測了 結果還是一樣
09/03 11:13, 28F

09/03 11:14, , 29F
封包狀態跟MAC上一樣 怪的是MAC那隻在WIN跑一樣會跳
09/03 11:14, 29F

09/03 11:52, , 30F
socket是TCP還是UDP?NoDelay有開嗎?不過你說log正確,感
09/03 11:52, 30F

09/03 11:52, , 31F
覺又不太像是封包的問題。
09/03 11:52, 31F

09/03 13:53, , 32F
在想是不是我電腦問題 把程式給其他人測試中
09/03 13:53, 32F

09/03 23:36, , 33F
可以貼出您Receive怎麼寫的嗎?是否有迴圈不斷polling
09/03 23:36, 33F
文章代碼(AID): #1I8zoXhZ (C_Sharp)
文章代碼(AID): #1I8zoXhZ (C_Sharp)