テキストボックス入力時のビープ音を消すには?

解決


てつ  2002-02-21 02:16:35  No: 75294

テキストボックス入力時に「エンター」を押すとビープ音が発生しますが、これはKeyPressイベントの引数に0を入れるとならなくなります。
が、MaxLength分文字を入力してしまうと、ビープ音が鳴ってしまいます。これをどうにか鳴らないように回避できないでしょうか?
パソコンの音がまったく鳴らなくなってもかまいません。
よろしくお願いします。


Say  2002-02-21 08:28:12  No: 75295

MaxLengthを設定せず、Changeで文字数管理するとか、
メッセージをフックして殺すとか、
Win2000なら、システムで警告音の設定をなしにするとか、
スピーカを物理的に切り離すとか、
自分の耳をふさぐとか・・・(^_^;


てつ  2002-02-21 19:08:24  No: 75296

すみません。良く分からない箇所が一つ。
『メッセージをフックして殺す』って実際にはどのようにするのでしょうか?


たかみちえ  URL  2002-02-21 20:36:50  No: 75297

高度ですねぇ、
  ようするに、入力文字数がもう限界というときには、
VBの裏で、Windowsとのメッセージのやり取りがあるんです。
それを特殊な方法でのぞいて、
見つけたら、そのメッセージはなかったことにして、入力したということすら隠す。
  …とそういうことですよね?

  "殺す"って言うと、なんか…。まあ、他にないかなぁ…。


たかみちえ  URL  2002-02-21 20:38:16  No: 75298

もっと大きなおとで覆い隠すという方法もありますね^^;
(解決になってない…)


てつ  2002-02-21 23:29:39  No: 75299

いろいろなご意見ありがとうございます。
どうやら大変難しい事をしないとできないということがわかりました。
あきらめる他なさそうですねぇ。。。


Say  2002-02-22 06:31:40  No: 75300

とてつもなく簡単なんですが…。
Maxlengthを設定しなければいいんだから
Text1_Changeイベントで

If Len(Text1.Text) > 10 Then
    Text1.Text = Left(Text1.Text,10)
    Text1.SelStart = 10
End If

とかすればいいんじゃない?


Say  2002-02-22 06:36:40  No: 75301

>それを特殊な方法でのぞいて

今回は多分システムフックする必要があるでしょう。
この方法はVBネタとしては初級を超えているかと…。


てつ  2002-02-22 22:32:22  No: 75302

今回はとりあえず妥協して、音が鳴るのは、し〜らんぷ〜り〜。。。


Cp.Alpha2  2002-02-23 18:24:48  No: 75303

ちくちくやれば音のなくすこともできますよ。

Private Sub Text1_KeyPress(KeyAscii As Integer)

Dim MaxLen As Long
MaxLen = 10

If Len(Text1.Text) = MaxLen And KeyAscii <> 8 Then KeyAscii = 0

End Sub

Sayさんのコードと一緒にして下さい。
ここではデリートとバックスペースの機能が保持されます。
上書きには対応していないのでご注意下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加