tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル keybd_eventの使い方、定数は何?
投稿日: 2008/05/26(Mon) 09:34
投稿者おじん
いつもお世話になっています。

今回は、ここ花ちゃんのサンプルを参考に「」を使って文字を入力
するテストをしていますが、キーボードの文字で「括弧"()"、ベキ
記号"^"」の入力方法がわかりません。

keybd_event関数の第一引数bVKの値はどのようにしたらよいのでし
ょうか。vBK定数の値を見ていったときASCII値かと思ったのですが
必ずしもそうなっていません。

因みに"("は40で、これを与えると"8"になります。これはvbKey8と
同じです。キーボードを眺めて、"("はShift+"8"なので、下記の
Command3_Clickのようにして試したのですが"8"のままです。

何か特殊なやり方がありそうです。
教えてください。よろしくお願いいたします。

以下は、テストコードです:
'----------------------------------------------------------
'keybd_event=>キーの状態を設定する    
'----------------------------------------------------------
'<引数>
'bVk:        定数(VK_XXXXX参照)またはVBの定数
'bScan:       スキャンコード
'dwFlags:     定数 (KEYEVENTF_参照)
'dwExtraInfo: 常に0

Private Declare Sub keybd_event Lib "user32" ( _
        ByVal bVk As Byte, _
        ByVal bScan As Byte, _
        ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2   ' キーを放す
Private Const VK_RETURN = &HD         '「Enter」キー
Private Const VK_SHIFT = &H10          '「Shift」キー

Private Const VK_ADD = &H6B            '「+」キー
Private Const VK_MINUS = &H6D          '  −
Private Const VK_A = 65                '「A」キー
Private Const VK_B = 66                '「B」キー

'Key0 〜 Key9 は ASCII コードの "0" 〜 "9" と同じ
'vbKey0 vbKey1 vbKey2 vbKey3 vbKey4
'vbKey5 vbKey6 vbKey7 vbKey8 vbKey9

private VK_Key as Byte    'テスト用文字

'ここ花ちゃんのサンプル
Private Sub Command1_Click()
    Call keybd_event(VK_A, 0, 0, 0)
    Call keybd_event(VK_A, 0, KEYEVENTF_KEYUP, 0)
    Call keybd_event(VK_RETURN, 0, 0, 0)
    Call keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0)
End Sub

'これはテスト用
Private Sub Command2_Click()
'文字を押す
    Text1.SetFocus
    VK_Key=vbKey8
    Call keybd_event(VK_Key, 0, 0, 0)
    Call keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0)
    Call keybd_event(VK_Key, 0, KEYEVENTF_KEYUP, 0)

    Call keybd_event(VK_RETURN, 0, 0, 0)
    Call keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0)
    Text1.SetFocus
End Sub

Private Sub Command3_Click()
'SHIFT+文字を押す
    Text1.SetFocus
    VK_Key=vbKey8
    Call keybd_event(VK_SHIFT, 0, 0, 0)
    Call keybd_event(VK_Key, 0, 0, 0)
    Call keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0)
    Call keybd_event(VK_Key, 0, KEYEVENTF_KEYUP, 0)

    Call keybd_event(VK_RETURN, 0, 0, 0)
    Call keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0)
    Text1.SetFocus
End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。