• 締切済み

UWSCについて質問です。

UWSCについて質問です。 特定のボタンを押している間だけループさせるスクリプトを組むにはどうすればいいでしょうか? ボタンを押している間はループされ、ボタンを押していない時は処理が止まる といったようなスクリプトをくみたいのですがどうもうまくいきません。処理させるスクリプト自体は簡単で NUMPAD7を押している間はAの処理 NUMPAD8を押している間はBの処理 NUMPAD9を押している間はCの処理 といった具合にスクリプトを組みたいのですがどうすればよろしいでしょうか? 教えて頂けると助かります。 ちなみに行う処理は以下のとおりです。 処理A BTN(LEFT,CLICK,450,500,10) BTN(VK_3,CLICK,10) while true //7を押している間はここからループ開始 BTN(LEFT,CLICK,400,300,10) BTN(LEFT,CLICK,700,660,10) Wend 処理B while true BTN(LEFT,CLICK,400,300,10) BTN(LEFT,CLICK,700,660,10) Wend 処理C while true BTN(LEFT,CLICK,400,300,10) BTN(LEFT,CLICK,400,660,10) wend

みんなの回答

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

>特定のボタンを押している間だけループ 残念ながらそのような処理はUWSCのみでは再現できません。 かなり近い処理でも WinAPIのGetAsyncKeyStateやDirectInputなんかを呼び出す必要があります 例)DEF_DLL GetAsyncKeyState(int):int:user32.DLL GETKEYSTATE(判定したいキー) 押したかどうかを判定します。 これを利用し、「1回目に押したらON、2回目はOFF」といった具合のマクロなら再現可能です。 このキーの判定を常時行う必要があるみたいですのでスレッド処理にしたほうが良いです 以下大雑把な例 // グローバル変数 PUBLIC bNum7,bNum8,bNum9 // スイッチ用変数 DIM sw7,sw8,sw9 // キー状態を見る関数のスレッドを作成 THREAD CHKKEY() // ここから無限ループ、抜けるにはAlt+F2 WHILE TRUE sw7 = sw7 + bNum7 IFB sw7 = 1 THEN //ここにクリックだかの処理を書く ELSEIF // 2回目に押した際にスイッチをリセット sw7 = 0 ENDIF WEND // 0.1秒ごとにキーの状態をグローバル変数に格納する関数 // 無限ループなので注意 PROCEDURE CHKKEY() WHILE TRUE bNum7 = GETKEYSTATE(VK_NUMPAD7) bNum8 = GETKEYSTATE(VK_NUMPAD8) bNum9 = GETKEYSTATE(VK_NUMPAD9)  SLEEP(0.1) WEND FEND

fa_thinker
質問者

お礼

ご回答ありがとうございます。 そうですか・・・ 「1回目に押したらON、2回目はOFF」 当初の目的とは少し仕様が違いますがこちらでもいけそうです。 大変参考になる例ありがとうございます。 こちらの例を参考にがんばって組みたいと思います。

関連するQ&A

専門家に質問してみよう