• ベストアンサー

テキストボックス(VB6)

text1(オブジェクト名)が選択された時 CapsLock をON(大文字)に切り替わる  但し,[shift]+[capslock]を押すと小文字にも切替可   つまり,通常の優先順位が 小文字→大文字ですが   大文字→小文字 の優先順にしたいのですが、 どのようにすればいいのでしょうか? ご存知の方教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

CAPSLOCKを読み取り、設定するサンプル テキストボックスの初期値を常にONにしたいなら、現在の状態を取得しないで、テキストボックスのフォーカス取得時に、常に"1"を設定してやったらヨシ Option Explicit ''キー状態を取得するためのAPI Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long ''キー状態を設定するためのAPI Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long ''Constant Value Private Const VK_CAPITAL  As Long = &H14 'CAPSLOCK Sub Main()   '配列要素定義   Const DEF_MAX   As Integer = 256   Dim lngRet   As Long   Dim bytlpKeyState(DEF_MAX - 1) As Byte   Dim strMSG   As String   Dim bytReverce As Byte    '現在のキー状態を配列に所得   lngRet = GetKeyboardState(bytlpKeyState(0))      '反転値を取得   bytReverce = GettReverceValue(bytlpKeyState(VK_CAPITAL))      '問い合わせ   strMSG = "現在のCAPSLOCKの設定は「" & ConvNumToChar(bytlpKeyState(VK_CAPITAL)) & "」です。" & vbCrLf & vbCrLf   strMSG = strMSG & "設定を「" & ConvNumToChar(bytReverce) & "」にします。よろしいですか?"   If MsgBox(strMSG, vbOKCancel Or vbQuestion) = vbCancel Then     Exit Sub   End If      '新値を設定   bytlpKeyState(VK_CAPITAL) = bytReverce   lngRet = SetKeyboardState(bytlpKeyState(0)) End Sub '値の反転 Public Function GettReverceValue(ByVal inBytValue As Byte) As Byte   Select Case inBytValue     Case 0: GettReverceValue = 1     Case 1: GettReverceValue = 0   End Select End Function '値を文字列に変換 Public Function ConvNumToChar(ByVal inBytValue As Byte) As String   Select Case inBytValue     Case 0: ConvNumToChar = "OFF"     Case 1: ConvNumToChar = "ON"   End Select End Function

すると、全ての回答が全文表示されます。

関連するQ&A