入力ボックスについての質問なのですが
例えばエクスプローラのアドレスバーで[C:\Windows\]などと入力します
その後決定ならばエンターを押しますね。(移動ってのもあるけど)
どんなアプリケーションでも大抵はエンターを押すと確定されます。
そのようなアプリケーションを組んでいたのですが、以下のスクリプトだと
エンターを押したときに「ポン」というシステムビープ音というのでしょうか・・・。
(user32.dllのMessageBeep関数で引数$0[0x00]の音)
↓うまくいえないので一応書いておきます。
#uselib "user32.dll" #func MessageBeep "MessageBeep" int button "鳴らす",*pop stop *pop MessageBeep $0 stop
が、なってしまいます。また、ESCを押すと終了するようにもしてあるのですが
そのときにも音がなってしまいます。どのようにしたら音が出なくなるのでしょうか?
下手な質問ですが、ご回答よろしくおねがいします。
#uselib "user32.dll" #cfunc GetWindowLong "GetWindowLongA" int, int #func SetWindowLong "SetWindowLongA" int, int, int gsel 0,-1 ; 親ウィンドウ非表示 onkey gosub *gkey ; キーが入力されたときのとび先 sdim words,256 ; 入力ボックスのメモリ確保 sdim passw,256 ; ↓ screen 2,320,120,6 ; ウィンドウ初期化 SetWindowLong hwnd, -16, GetWindowLong (hwnd, -16) - $20000 ; GetWindowLongで形状変更 title "キー入力" ; ウィンドウキャプション設定 font msgothic ; フォント設定 syscolor 15 : boxf : syscolor 8 ; 背景をシステム色で塗りつぶし ; 以降オブジェクト等配置 pos 20,20 mes "ユーザー名(日本語可)" pos 40,36 input words,200,20 id = stat pos 20,64 mes "パスワード" pos 40,80 input passw,200,20 psw = stat sendmsg objinfo(psw, 2), $cc, '*' ; パスワード入力[*] gsel 2,1 ; 画面表示 stop *gkey objsel -1 ; カーソルがないときは無視 if wparam = 13 { if stat = id { objsel psw } if stat = psw { end } } if wparam = 27 { end } return