HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
1124
yamayamabuttonを、Enterキーで実行出来るようにして欲しい。5解決


yamayama

リンク

2025/11/24(Mon) 19:15:56|NO.104333

画面上のフォーカスしているbuttonを、Enterキーで実行出来るようにして欲しい。
スペースキーで実行するのは裏ワザ?公式な仕様?



この記事に返信する


naya

リンク

2025/11/25(Tue) 19:32:00|NO.104336

一応、自分でできる範囲での対応例をあげておきます。

;ボタンのエンターキー入力対応例
button goto "btn1", *btnchk
button goto "btn2", *btnchk
objsel 0

*main
await 15
stick key
if (key&32) : goto *btnchk
goto *main


*btnchk
objsel -1 : btn_id=stat
;if (btn_id==1) : end
title "btn"+(btn_id+1)
goto *main

見当違いの回答だったらすみません…。



yamayama

リンク

2025/11/30(Sun) 12:51:01|NO.104359

回答ありがとうございます。

教えてもらった方法で、うまく動いています。

AIに何十回も聞いて、全くうまくいかず、もぐら叩き状態になっていて、
断念していました。ありがとうございました。

スペースキーは、ボタン配置時のgotoで動くので、
Enterキーの要望は残しておきます。



usagi

リンク

2025/12/1(Mon) 14:22:51|NO.104368

こんにちわ。
勘違いしてたら申し訳ないですが、そのようなWindowsの仕様はないので、
標準ボタンであれば"ボタンを押した"メッセージが送れますのでそれを使ったらどうでしょうか?

裏技というのは分かってないですが、ボタンにフォーカスがあっている状態での
スペースで押した事になるのはWindowsの昔からの使用です。
(おそらくWin11のボタンではフォーカスが見えないから裏技と表現されているのかも?)
よろしかったらどぞ


mes "TABやクリックなどでフォーカスをボタンに合わせたらEnter押してください。" onkey gosub *ON_KEY button goto "ボタン1", *ON_CLICK_01 button goto "ボタン2", *ON_CLICK_02 stop *ON_CLICK_01 mes "ボタン1押した" stop *ON_CLICK_02 mes "ボタン2押した" stop ; ☆キーボードを押した時 *ON_KEY if wparam = 13 /* ENTER */ { objsel -1 : if stat == -1 : return sendmsg objinfo_hwnd(stat), 0xF5 /* BM_CLICK */ ; ☆オブジェクトにボタンを押したメッセージを送信 } return



zakki

リンク

2025/12/1(Mon) 19:44:51|NO.104371

Webアプリやクロスプラットフォームアプリ増えて必ずしも守られてませんがWindowsとしては、
スペースキーでアクティブなボタンを押す
エンターキーでデフォルトのボタンを押す
っていうのが推奨です。

https://learn.microsoft.com/ja-jp/windows/win32/uxguide/inter-keyboard



tkzn

リンク

2025/12/3(Wed) 22:52:14|NO.104375

既定のボタン化(見た目の変更)
エンターキーの監視および、その処理を行うのは次のようなコードになります。
他の一般のソフトと同じような動きにしたい場合にはHSPの標準の機能だけではなく、
WinAPIを使う必要があります。ただし、プラットフォームに強く依存してしまいます。


#include "user32.as" #module #define BS_DEFPUSHBUTTON ($00000001) #define GWL_STYLE (-16) #define BM_CLICK ($F5) #deffunc button_def int obj_id btn_hwnd = objinfo_hwnd(obj_id) btn_style = GetWindowLong(btn_hwnd, GWL_STYLE) | BS_DEFPUSHBUTTON SetWindowLong btn_hwnd, GWL_STYLE, btn_style return #deffunc button_def_listen int obj_id btn_hwnd = objinfo_hwnd(obj_id) stick key if (key&32) : SendMessage btn_hwnd, BM_CLICK, 0, 0 return #global button gosub "btn1", *btnchk btn1_id=stat button gosub "btn2", *btnchk btn2_id=stat objsel btn1_id button_def btn2_id // 既定のボタンのデザインにする *main await 15 button_def_listen btn2_id // エンターキーを監視し、押された場合にはボタンがクリック時の動作を行う goto *main *btnchk objsel -1 : btn_id=stat title "btn"+(btn_id+1) return



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.104333への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2025(c) All rights reserved.