
以下の環境で開発を行っています。
OS:Windows2005
開発言語:vb.net2005 FrameWork 2.0
現在、フォーム上のテキストボックスにフォーカスが遷移した場合にCapsLockの状態がOffの場合のみ、SendKeyクラスのSendメソッドを利用し、CapsLockをOnに設定するようにPGの作成をおこなっています。
サンプルなどを確認したところ、以下のようなコードでいけると思ったのですが、どうもうまくいきません。
ご存知の方、ご教授下さい。
Private Sub txt1_GotFocus(・・・) Handles txt1.GotFocus
'CapsLockがOffの場合
If Not (Control.IsKeyLocked(Keys.CapsLock)) Then
'大文字入力制御(CapsLockキーを送信)
SendKeys.Send("+{CAPSLOCK}") 'Shift+CapsLockを送信
End If
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
CapsLockの制御をするより 入力されたデータを加工したほうが簡単なように思います
半角英数のみの対応なら テキストボックスのTextChangedイベントで
dim n as integer = TextBox1.SelectedStart
TextBox1.Text = TextBox1.Text.ToUpper
TextBox1.SelectedStart = n
といった具合でうまくいきそうです
No.2
- 回答日時:
> クライアント端末のOSに依存する為
Windows 系 OS 以外がある可能性あり...ということですか?
SendInput なら話はわかりますが、keybd_event Api については、
Windwos 系 OS ならまず心配は不要だと思いますよ。
それでもご心配なら、いろいろな環境(OS)でテストするまでだと
思います。
どうしても API が使用不可なら、私は VB6.0 使いなので、
VB2005暦が浅く、この方法以外を知りません。すみません。
もうしばらく、別の方の回答を待ってみて下さい。
何度もご解答ありがとうございます。
基本的にはWindows 系 OS 以外がある可能性はほぼ無いのですが・・・
もう少し粘ってみます。
本当にありがとうございました。
No.1
- 回答日時:
こんばんは。
KenKen_SP です。こんな感じでどうですか?
# 本当は keybd_event より SendInput API の方が良いみたいですけど...
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Private Shared Sub keybd_event( _
ByVal bVk As Byte, _
ByVal bscan As Integer, _
ByVal dwflags As Integer, _
ByVal dwExtraInfo As IntPtr)
End Sub
Private Const KEYEVENTF_KEYUP As Integer = &H2
Private Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
Private Const VK_CAPITAL As Integer = &H14
Private Sub TextBox1_GotFocus( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles TextBox1.GotFocus
If Not (Control.IsKeyLocked(Keys.CapsLock)) Then
Call keybd_event(VK_CAPITAL, 0, 0, IntPtr.Zero)
Call keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, IntPtr.Zero)
End If
End Sub
End Class
ご解答ありがとうございます。
上記の方法でOKなのですが、どうしても
APIを使いたくないので・・・(クライアント
端末のOSに依存する為)
やはり無理なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報