以下の環境で開発を行っています。
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 ListViewの選択色について...
-
"判定"の英語表現について
-
CapsLock送信 キーストローク
-
For ~ Next の中での Dim宣言...
-
一目惚れってどんな感覚?
-
以前アクティブだったウィンド...
-
iPhone 14 Pro 対 GNS3000 のGP...
-
ENTERキーでフォーカスを移動し...
-
Detected memory leaks!
-
Wacomのタッチ機能が反応しませ...
-
DBマジック
-
textBoxに数値を入力すると円と...
-
Flashについて教えて下さい。
-
【至急】フォトショップの「自...
-
メッセージボックスを前面に表...
-
Windows7でクリップボードを開...
-
どういう意味
-
SPREAD(GrapeCity)のセルにフォ...
-
Windows 10 で 外字を作る方法
-
CapCutで、人の目からビームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
"判定"の英語表現について
-
For ~ Next の中での Dim宣言...
-
vba ListViewの選択色について...
-
DBマジック
-
Wacomのタッチ機能が反応しませ...
-
textBoxに数値を入力すると円と...
-
以前アクティブだったウィンド...
-
Shellコマンドで別のexeを起動...
-
プログラム中の大カッコについて
-
レーザの広がり角とビーム径
-
X線CTにおけるコリメータの役割...
-
NOVAのCMで、まるで関西...
-
Detected memory leaks!
-
大腿骨の骨梁
-
フォートナイト Epic Games Lau...
-
CapsLock送信 キーストローク
-
エディットでEnterキーでのTAB移動
-
一目惚れってどんな感覚?
-
USJハリウッド・マジック(花火...
-
iPhone 14 Pro 対 GNS3000 のGP...
おすすめ情報