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

解決


てつ  2002-02-20 17:16:35  No: 75294  IP: [192.*.*.*]

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

編集 削除
Say  2002-02-20 23:28:12  No: 75295  IP: [192.*.*.*]

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

編集 削除
てつ  2002-02-21 10:08:24  No: 75296  IP: [192.*.*.*]

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

編集 削除
たかみちえ  URL  2002-02-21 11:36:50  No: 75297  IP: [192.*.*.*]

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

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

編集 削除
たかみちえ  URL  2002-02-21 11:38:16  No: 75298  IP: [192.*.*.*]

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

編集 削除
てつ  2002-02-21 14:29:39  No: 75299  IP: [192.*.*.*]

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

編集 削除
Say  2002-02-21 21:31:40  No: 75300  IP: [192.*.*.*]

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

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

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

編集 削除
Say  2002-02-21 21:36:40  No: 75301  IP: [192.*.*.*]

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

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

編集 削除
てつ  2002-02-22 13:32:22  No: 75302  IP: [192.*.*.*]

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

編集 削除
Cp.Alpha2  2002-02-23 09:24:48  No: 75303  IP: [192.*.*.*]

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

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

編集 削除