我現在碰到一個問題,
希望各位大大教教我<(_ _)>
就是我做了一個有關打地鼠的遊戲
(完全用鍵盤控制,可用來練習打字)
目前這個遊戲已經可以玩了,但是
如果當使用者不小心按到[Num Lock]時,所有數字鍵的Keycode值都會跑掉
(例如:1本來的Keycode=97,結果會變成35)
請問要怎麼才能讓使用者就算按下[Num Lock]也不會改變Keycode的值呢?
還有,Keycode值常常會突然變成229(不管按下什麼鍵都一樣),然後關掉再執行一次就恢復正常了,這是為什麼呢?
小的我在這裡先謝謝各位了!
2006-09-19 12:44:59 · 2 個解答 · 發問者 以晴 2 in 電腦與網際網路 ➔ 軟體
感謝WJS !!(^ˇ^
我是想要讓[Num Lock]的燈都一直是亮亮的,
用了大大你的程式之後它一直都是暗的......
所以我就一直想辦法亂改一些數字(因為我看不太懂這些程式= =)
結果我把If GetKeyState(vbKeyNumlock) And vbShiftMask Then改成
If Not(GetKeyState(vbKeyNumlock)) And vbShiftMask Then就成功了~~
關於Keycode值的問題,是指要看程式碼還是指其他的東西?
2006-09-20 11:53:17 · update #1
'使NumLook保持在有效(亮燈)的方式Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As IntegerPrivate Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As LongPrivate Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyNumlock Then If GetKeyState(vbKeyNumlock) And vbShiftMask Then keybd_event vbKeyNumlock, MapVirtualKey(vbKeyNumlock, 0), 1, 0 End If End IfEnd SubPrivate Sub Form_Load() KeyPreview = TrueEnd Sub'至於Keycode值常常會突然變成229可能要看code才能解決XD
2006-09-20 19:17:13 補充:
^_^|| 那A安ㄋㄟ?我執行時是亮的,在你的電腦卻滅掉?好奇怪的事情XD.關於Keycode值的問題,可能要看程式碼才知道你可以把整個專案寄給我,我研究看看(不保證會好哦)rontex8888@yahoo.com.tw
2006-09-19 15:08:09 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋
其實,KeyCode會變成229只有一個原因:你的輸入法非英數輸入法。
2010-03-25 16:52:11 補充:
--補充--
還有,如果按下NumLock KeyCode會跑掉是因為:原本的數字鍵變成功能鍵了。
你看看九宮格數字鍵:數字下面都有功能鍵的名稱,那就是NumLock取消後按鍵會執行的功能了。
參考:我自己
2010-03-25 12:47:52 · answer #2 · answered by 吃魚丸 1 · 0⤊ 0⤋