投稿

8月, 2019の投稿を表示しています

任意のキーを押したらループを抜ける

イメージ
皆さん、こんにちは。

気がついたら、もう立秋が来てって、もうすぐ立秋の時期も終わりそうです。
涼しくなってきてホントに秋じゃないか!というくらいです。

そんな中、今日お送りする話題はLotusScriptのtipsです。繰り返し処理をする際、ループ回数は決められないので、キー入力をした時点でループを抜けられるようにしたい。
という要望がありました。
そんなこと可能なのかなぁ?と考えつつ、キー入力を受け入れられればいいんだよなぁ。とNotesのヘルプを見ていました。

すると、SendKeys ステートメント (LotusScript 言語)
というものがありましたので、読んでみたところ、キー入力をプログラムで行いますよ。
というもので、要望とは違っていました。
うーん、残念・・・

そこで、ちょっと考え方を変更。
LotusScriptはVB互換なので、VB関係でそういったことが出来るのではないか?と・・・

ということで検索してみたら、ありました。

GetAsyncKeyState」という関数を利用すると出来るようです。
この関数は、WindowsのUser32.dllの中に含まれているため、LotusScriptで使用する場合、
(Declarations)に
Declare Function GetAsyncKeyState Lib "User32.dll" (Byval vKey As Long) As Long

という一行を追加する必要があります。

ではサンプルです。
Sub Click(Source As Button)     Const vbKeyF3  = 114     Dim i As Long         Do While True         'F3キーで終了         If GetAsyncKeyState(vbKeyF3) Then             Exit Do         End If                 Print Cstr(i) & "回目のループ"         i = i + 1     Loop         Msgbox "F3キーが押されたのでループを終了しました。" End Sub

ひたすらループし続…