satocchiaブログ

satocchiaブログ

PR

×

キーワードサーチ

▼キーワード検索

カレンダー

コメント新着

tomoZo@ Re:Pale Moon日本語化トラブル(06/06) はじめまして。 28.16.0でまたもや提供さ…
satocchia @ Re[1]:Pale Moon日本語化トラブル(06/06) zui_9さんへ 本日、確認しました。ようや…
zui_9 @ Re:Pale Moon日本語化トラブル(06/06) 上記リンク「Githubのプロジェクト」の左…
わたなべ@ Re:powershellコンソール、見づらくありませんか?(08/26) 初めまして、この情報最高です! 背景を白…
y__@ Re:uwscでGUIフォーム(05/12) UWSC 仮掲示板から飛んできました。 HTAで…
2018.12.25
XML
カテゴリ: UWSC
user32.dllの「GetKeyboardState」APIを使って複数キー読み込みをしてみました。
同じことは組み込み関数のGetKeyStateでできるんですが、読み込みが1回でできます。

仮想キーコードは​ ここ ​がよくまとまっているみたい。

※12・26追記
ソースのコメントをもう少し丁寧に書けば良かった。
getPushedKeys()は押された複数のキーのキーコードを要素として持つ配列を返す関数です。
各配列の値はキーコードです。例えば、得られた配列(値の昇順で入るみたい)の中に、65と66があれば、「A」と「B」が同時に押されたということが分かる仕掛けです。


getPushedKeys.uws


    while 1
        pushed    =getPushedKeys()
        keys    ="キーを押すと、下にキーコードが表示されます。alt+f2で終了<#CR>"
        for key in pushed
            keys    =keys + key + ","
        next
        fukidasi( keys )
    wend
endif

function getPushedKeys( skipToggles=true )
    def_dll GetKeyboardState( var byte[] ):bool:user32.dll

    if skipToggles
        //トグル系のキーは何もしなくても押されたことになるのでデフォルトで排除
        last    =239
    else
        last    =255

    buff    =safearray( 0,last )
    GetKeyboardState( buff )
    for i =0 to last
        PushedKey    =buff[ i ]
        if PushedKey > 127
            result    =result + i + ","
        endif
    next
    //余分なコンマを外す
    result    =copy(result, 1, length( result )-1)
    result    =split( result, "," )
fend





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2018.12.26 00:20:17
コメント(2) | コメントを書く
[UWSC] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


Re:キー同時読み込み(12/25)  
せりあ さん
uwscの掲示板からきました。haiの配列をhai1のようにしたいのですが、getPushedKeys
の関数を使ってやろうとしてもうまくいきません。pushed=getPushedKeys()のpushedが配列だと私は認識しているのですが、popupmenu(pushed)としたらエラーになります。

しろまさ様が提示して頂いた関数のキーの配列要素を一括で読み込める関数がgetPushedKeysだと認識しているのですが、この認識で間違いないでしょうか?

dim hai[]="1","2","3"
↓
[希望処理]
dim hai1[]="1(a)","2(s)","3(d)"


if get_uwsc_name="getPushedKeys.uws"
while 1
pushed =getPushedKeys()
keys ="キーを押すと、下にキーコードが表示されます。alt+f2で終了<#CR>"
for key in pushed
keys =keys + key + ","
next
fukidasi( keys )
wend
endif

function getPushedKeys( skipToggles=true )
def_dll GetKeyboardState( var byte[] ):bool:user32.dll
result =""
if skipToggles
//トグル系のキーは何もしなくても押されたことになるのでデフォルトで排除
last =239
else
last =255
endif
buff =safearray( 0,last )
GetKeyboardState( buff )
for i =0 to last
PushedKey =buff[ i ]
if PushedKey > 127
result =result + i + ","
endif
next
//余分なコンマを外す
result =copy(result, 1, length( result )-1)
result =split( result, "," )
fend (2018.12.25 11:03:02)

Re[1]:キー同時読み込み(12/25)  
せりあさんへ

上の追記のとおりです。得られたキーコードをslctboxで使える文字列の配列にしたいなら、hashtableでキーコードと文字列の対応表を作るといいと思います。 (2018.12.26 00:26:37)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: