返回列表 上一主題 發帖

[發問] Num Lock 數字鍵狀態取得

本帖最後由 jackyq 於 2016-9-26 17:51 編輯

SendKeys "^g^a{DEL}"  , True   '   If GetKeyState(vbKeyNumlock) = 0 Then  '← 此指令可正確讀取狀態  

SendKeys "{NUMLOCK}  好像有 bug 應該也沒法用

TOP

SendKeys 有 bug
可以嘗試用  keybd_event 去送

TOP

回復 5# Scott090

把所有  SendKeys 移除
只留 debug.print GetKeyState(vbKeyNumlock)  一句

Numlock 手動關閉 , 觀察 GetKeyState(vbKeyNumlock) 是否正確
Numlock 手動開啟 , 觀察 GetKeyState(vbKeyNumlock) 是否正確
如果都正確無誤, 表示是 SendKeys 在作怪

TOP

回復 7# Scott090


SendKeys 既然會作怪, 不如這部分乾脆不用它

Public Sub Sendkey2(keyArray)
  For w = LBound(keyArray) To UBound(keyArray): Call keybd_event(keyArray(w), 0, &H1, 0): Next
  For w = LBound(keyArray) To UBound(keyArray): Call keybd_event(keyArray(w), 0, &H3, 0): Next
End Sub

Public Sub  clear_win  (                 )
Sendkey2 Array(vbKeyControl, vbKeyG)
Sendkey2 Array(vbKeyControl, vbKeyA)
Sendkey2 Array(vbKeyDelete)
If GetKeyState(vbKeyNumlock) = 1 Then
   Sendkey2 Array(vbKeyNumlock)
End If
End Sub

TOP

回復 10# Scott090

這部分應該不是bug
sendkey 本來就有失焦的風險

提供一種簡法來清除即時窗
看你能不能接受這種方法
debug.print string(88, vbcr )

TOP

        靜思自在 : 心中常存善解、包容、感思、知足、惜福。
返回列表 上一主題