ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 03:32

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - GetKeyState()が動かない?
作成者 メッセージ
  記事の件名:  Re: ActiveBasicのバージョン  引用付きで返信する
引用:
> こんにちは、こうきです。
> バージョンを書き忘れていてすみませんでした。
> ABのバージョンは4.13と4.20と4.21と3.13で確認しました。
> 私の操作できる環境にあるWindows98のパソコンでは同じような現象(キーの状態にかかわらず常に1もしくは0)がでます。
常に0か1が返るということはGetKeyStateが全く働いてないと言うことですね。
そもそも、これらの関数はWindowsが提供しているものですからABのバグということは考えられないんですけど、こちらには98が無いので他の方にチェックしてもらうほかないです。
引用:
> Sleep()関数を入れても同様です。
> 同じプログラムでも表示が0になったり、1になったりします。
> やはりプログラムを実行してからはキーを押してもまるで反応しません。
> よろしくお願いします。
兎に角、動かないのであれば、GetAsyncKeyStateの方を使わないとしょうがないでしょう。

ついでなので2つ関数の違いを書いておきます。

GetKeyState関数 メッセージキュー内に入っているキーの状態を取得

GetAsyncKeyState関数 キーボード上のキーの状態を取得


問題の原因を突き止めるヒントになればいいんですが、、、




P.S.
そういえば95使ってたときに同じようにGetKeyStateが動かなかったような
記憶がおぼろげながらあります。
その時はAB2.55くらいだったと思いますが。。。
投稿記事 Posted: 2006年2月14日(火) 18:09
  記事の件名:  ActiveBasicのバージョン  引用付きで返信する
こんにちは、こうきです。
バージョンを書き忘れていてすみませんでした。
ABのバージョンは4.13と4.20と4.21と3.13で確認しました。
私の操作できる環境にあるWindows98のパソコンでは同じような現象(キーの状態にかかわらず常に1もしくは0)がでます。
Sleep()関数を入れても同様です。
同じプログラムでも表示が0になったり、1になったりします。
やはりプログラムを実行してからはキーを押してもまるで反応しません。
よろしくお願いします。
投稿記事 Posted: 2006年2月14日(火) 09:08
  記事の件名:  Re: GetKeyState()が動かない?  引用付きで返信する
引用:
> こんにちは、こうきです。
> AB側のバグではないのかもしれませんが、
> 現在、自宅(WindowsXp)と職場(Windows98,NT4.0Server)で
> プログラミングを行っているのですが、
> キー入力によって動作を分けるプログラムを組んでいたところ
> 職場のパソコンで実行させるときのみ
> API関数のGetKeyState()が正常な値を返しません。
バグ報告ということで
最低でもActiveBasicのバージョンを書きましょうね。

私の方ではWindowsMeとXP、AB4.21の組み合わせて調べてみましたが、
問題の症状は出ませんでした。
引用:
> 次のプログラムで左のキーを押しても値が1しか返って(表示で)きません。
GetKeyStateで1や0が返ってくるのは”トグル”と呼ばれる仕様ですね。
GetKeyStateが呼ばれる以前にキーが押されていた状態だと1が、
押されていない状態だと0が返ります。
引用:
> ところが次のようにCLS文とlocate文を同時に挿入すると
> 0しか返ってこなくなります。
コード:
#N88BASIC
While 1
 cls
 Locate0,0:Print GetKeyState(VK_LEFT)
 Sleep(5)
Wend
待機関数を入れてみてはどうでしょうか?
テストしてみてください。
投稿記事 Posted: 2006年2月13日(月) 17:31
  記事の件名:  GetKeyState()が動かない?  引用付きで返信する
こんにちは、こうきです。
AB側のバグではないのかもしれませんが、
現在、自宅(WindowsXp)と職場(Windows98,NT4.0Server)で
プログラミングを行っているのですが、
キー入力によって動作を分けるプログラムを組んでいたところ
職場のパソコンで実行させるときのみ
API関数のGetKeyState()が正常な値を返しません。
次のプログラムで左のキーを押しても値が1しか返って(表示で)きません。
コード:
#N88BASIC
While 1
 Print GetKeyState(VK_LEFT)
Wend
ところが次のようにCLS文とlocate文を同時に挿入すると
0しか返ってこなくなります。
コード:
#N88BASIC
While 1
 cls
 Locate0,0:Print GetKeyState(VK_LEFT)
Wend
家のXPマシンでは正常に動くのでプログラム自体にはエラーはないと思われます。

GetAsyncKeyState()関数の方は正常に動作しているので
こちらを使えばいいのですが、どうも気になるので、
ここに報告いたします。
どなたか同じような結果になったかたいっらっしゃいますでしょうか?
投稿記事 Posted: 2006年2月13日(月) 17:05

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean