Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long '移動滑鼠到指定的坐標
SetCursorPos 100, 200
我在win7系統上面用上面這個函式移動滑鼠可以正常使用,但是Win10下運行沒效果,求助!!!!!
uj5u.com熱心網友回復:
不知道你說的“沒效果”是什么效果。
究竟是“移動結果不正確”,還是“指標根本不移動”?
如果是指標不動,那在呼叫API之后立即用Err.LastDllError看看是不是API沒有成功執行、以及錯誤代碼是多少。
uj5u.com熱心網友回復:
就是移不了,執行這函滑鼠沒反應uj5u.com熱心網友回復:
是指標不動根本不動,也沒有錯誤提示。uj5u.com熱心網友回復:
有一種方法驗證。代碼里面,每3秒,移動一次滑鼠的位置。然后你觀察你的滑鼠位置是否會變化。
如果變化了,就說明你的改動是有效的。
否則,就是真的失效了。
另外,這函式是需要權限的吧?查查如果讓VB6程式獲取權限。
uj5u.com熱心網友回復:
Private Sub Timer1_Timer(Index As Integer)a = a + 2
b = b + 2
SetCursorPos a, b
End Sub
謝謝樓上,按照你的提示做了,時鐘運行好多次以后滑鼠才開始動,怎么回事?
uj5u.com熱心網友回復:
有可能是權限問題uj5u.com熱心網友回復:
呼叫系統的API,哪會有什么“錯誤提示”!!!

給你說了:如果不成功,需要用 Err.LastDllError 看“錯誤代碼”,
然后按錯誤代碼去分析“操作失敗”的原因!
然而,按你5樓、6樓的說法,又有點莫明其妙了,
要是“無效”,那就應該永遠無效,而不會“過會兒,它就會移動”…………
要真象你5樓說的那樣,只能說明你的“認知”和驗證方法有問題。

第1步是驗證“是否能移動”:
1. 傳入很小的x和y值,在執行前把滑鼠移到螢屏中部或右下的區域;
然后執行呼叫,看滑鼠是否移到左上角去了。
動了則有效,不動則無效。
2. 按“螢屏大小”(解析度的像素數),傳入較大的x和y值(不要大于解析度值),
先把滑鼠移到左上角,再執行呼叫,看滑鼠是否往“右下”方向移動了。
同樣,移動了就說明有效,沒動就說明無效。
如果“無效”,再考慮是否因“權限”問題不能操作:
先“以管理員身份運行”啟動VB6,再進行上面的“驗證”。
(或者寫代碼編譯成exe,再以管理員身份運行執行你的exe來驗證。
如果“仍然無效”(但這基本上是“不可能的”),那就沒轍了。
這個API的引數值,單位是“像素”。
按理說給定的是多少x和y,就應該移動到相應的坐標位置上去。
但如果“坐標不準”,就需要考慮的是“坐標比例”的問題了。
不過,要是“執行無效”的話,那就說了也是白說。
因此先等樓主驗證出確切結果再說吧。
我現在只有Win7系統,我的Win10系統被我搞得不能啟動了,
現在還沒空重裝,沒法親自試驗。
uj5u.com熱心網友回復:
Err.LastDllError 錯誤為0uj5u.com熱心網友回復:

然后呢?就沒下文了?
uj5u.com熱心網友回復:
然后沒辦法解決了,我改用vb.net了,如果你知道vb6怎么解決的話,麻煩告訴我,謝謝了.uj5u.com熱心網友回復:
vb.net也不好用,真難,還是得用vb6,誰有辦法解決啊??uj5u.com熱心網友回復:
呵呵,我說它能動,你非要“一會兒能動,一會兒又說不能動”,我能拿你咋辦?
uj5u.com熱心網友回復:
我在7樓說了那么多,你卻完全不當回事,就你這種態度,能夠解決問題,那……好吧,算你走運。
uj5u.com熱心網友回復:
大概知道問題了,可能是我在模擬器上安裝的win10不行,我用另外用電腦安裝個win10就可了。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/16820.html
標籤:API
