スクリーンキーボードのシフトキー
- 題名: スクリーンキーボードのシフトキー
- 著者: mezashi
- 日時: 2008/05/27 11:59:55
- ID: 22123
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: スクリーンキーボードのシフトキー
- 著者: やじゅ
- 日時: 2008/05/27 12:49:34
- ID: 22124
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: スクリーンキーボードのシフトキー
- 著者: mezashi
- 日時: 2008/05/28 8:56:47
- ID: 22133
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: スクリーンキーボードのシフトキー
- 著者: やじゅ
- 日時: 2008/05/28 13:00:52
- ID: 22134
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: スクリーンキーボードのシフトキー
- 著者: mezashi
- 日時: 2008/05/28 16:33:53
- ID: 22135
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
スクリーンキーボードをYAS's さんの VB2005Tipsのスクリーンテンキーパッドを
参考に作成中ですが、英字の大小文字でつまずいています。
通常スクリーンキーボードをクリックすると"abc"となるのですが
これをシフトキーを押した後だと"ABC"と入力できるようにしたいのです。
入力の簡単なソースを張ります。
<DllImport("user32.dll")> _
Private Function SendInput( _
ByVal nInputs As Integer, _
ByRef pInputs As INPUT, _
ByVal cbSize As Integer) _
As Integer
End Function
Private Sub SendInput(ByVal VirtualKeyCode As wVk, ByVal Flag As dwFlags)
Dim inputevents As New INPUT
inputevents.type = type.INPUT_KEYBOARD
inputevents.ki.wVk = VirtualKeyCode
inputevents.ki.wScan = CShort(MapVirtualKey(CInt(VirtualKeyCode), 0))
inputevents.ki.dwFlags = ExtendedKeyFlagW(VirtualKeyCode) Or Flag
inputevents.ki.time = 0
inputevents.ki.dwExtraInfo = GetMessageExtraInfo()
SendInput(1, inputevents, Marshal.SizeOf(inputevents))
End Sub
Private Function ExtendedKeyFlagW(ByVal Key As wVk) As dwFlags
Dim Flag As dwFlags = 0
Select Case Key
Case wVk.VK_CANCEL, wVk.VK_PRIOR, wVk.VK_NEXT, wVk.VK_END, wVk.VK_HOME, _
wVk.VK_LEFT, wVk.VK_UP, wVk.VK_RIGHT, wVk.VK_DOWN, _
wVk.VK_SNAPSHOT, wVk.VK_INSERT, wVk.VK_DELETE, _
wVk.VK_DEVIDE, wVk.VK_NUMLOCK, wVk.VK_RSHIFT, wVk.VK_RCONTROL, wVk.VK_RMENU
Flag = dwFlags.KEYEVENTF_EXTENDEDKEY
End Select
Return Flag
End Function
自分のキーボードのシフトキーを押しながらスクリーンキーボードをたたくと
大文字ではいるのですがそれでは意味がないです。
Windowsのスクリーンキーボードではできるのでできると思っているのですが
デバッグでとめているとフリーズして調査できません。
どなたかご教授お願いします。