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


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0227
hasega非アクティブウィンドウの状態での、キー入力2解決


hasega

リンク

2023/2/27(Mon) 01:42:35|NO.99133

非アクティブ状態で、numlockの状態と、numlockキーを押している・押していない
判定をしたいのですが、ウィンドウがアクティブ状態でないと認識してくれないようで、
なにか方法はございませんでしょうか。



この記事に返信する


沢渡

リンク

2023/2/27(Mon) 12:45:57|NO.99134

私が現在使用しているキーボードにはNUM LOCKがないのでCAPSで代用していますが、
GetKeyStateを使う方法で上手くいくでしょうか?
(GetKeyStateの引数を0x90にすればNUM LOCKの状態を取得できると思います)

#include "user32.as" repeat redraw 0 color 255,255,255 : boxf : color 0,0,0 : pos 0,0 GetKeyState 0x14 //仮想キーコードを指定する。 //ここではCAPSキーですが、0x90にすればNUM LOCKが取得できると思われます。 mes (stat&0x8000)!=0 //キーを押している状態だと(stat&0x8000)を計算した結果が0x8000になる。 mes stat&0x1 //トグル状態(CAPSやNUM LOCKが有効な状態)になっている場合は(stat&0x1)を計算した結果が0x1になる。 redraw 1 await 100 loop



hasega

リンク

2023/2/27(Mon) 19:25:03|NO.99137

ご助言、ありがとうございました。
おかげさまで、考えていた通りの動作になりました。

・普段、オンオフのどちらかに固定して、
 Numlockキーを押している時のみ反対の動作になる。

 テンキー付きキーボードだと、
 Numlock+数字で、方向やHomeキー

 テンキーなしキーボードだと
 Numlock+文字で、数字入力




#uselib "user32" #func keybd_event "keybd_event" int, int, int #func global GetKeyState "GetKeyState" sptr mode=1 // 0=テンキー付きキーボード , 1=テンキーなしキーボード repeat color 255,255,255 : boxf : color 0,0,0 : pos 0,0 GetKeyState 0x90 //仮想キーコードを指定する。 Numlock if mode=0:if stat=0:keybd_event $90:keybd_event $90, , 2 //NUMLOCKキーを押しているとき以外はNUMLOCK ONになる。 if mode=1:if stat!0:if (stat&0x8000)=0:keybd_event $90:keybd_event $90, , 2 //NUMLOCKキーを押している時のみNUMLOCK ONになる。 await 50 loop



記事削除

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

NO.99133への返信

マスコット

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

名前

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

削除用パスワード

解決したら質問者本人がここをチェックしてください。

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

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