2017-02-17 12 views
0

私はいくつかのマウスを使用するスクリプトを用意しています。必要に応じて、F3キーを押してリロードを強制的に停止するか、ESCを押して終了します。それは正常な速度で問題なしで正常に動作します。停止不可能なスクリプト問題

問題は次のとおりです。マウス速度を下げてマウスを長くすると、スクリプトは止まらなくなります。F2、F3、ESCキーを数回押して停止しますが、スクリプトはそれを無視してmousemoves。ここで

は私の問題の最小限の例です:

SendMode Input 

$F1:: 
SetDefaultMouseSpeed, 50 
SetMouseDelay, 30 

Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 
Mousemove, 200, 200 
Mousemove, 600, 600 

SoundPlay, *48 
return 

$F2:: Pause 
$F3:: Reload 
$ESC:: ExitApp 

は、なぜそれが起こるんし、どのように私は(どのように私も低速+高遅延でスクリプトを停止することができます)、それを修正することができますか? ps:F1キーは、マウスのシーケンスを開始します。それが到達するまでAutoHotkeyをシングルスレッド内部にあるため、非ゼロの速度で

答えて

2

のMouseMoveが同じAHKスクリプト内の他のホットキーによって中断することができない(それだけemulates糸状の挙動)とは、各マウス微動用blocking sleepを行いますあなたが指定した全体の距離。

ソリューション:;ホットキーがそれぞれのMouseMove後を押したが、それは非瞬間だされたかどうか

  • チェック
  • 各1px移動後にGetKeyStateをチェックする独自のMouseMoveを実装します。それ以外の場合は、クローズ処理
    一時停止した後に滞在されます子供がトレイアイコンを非表示にする:Process Close
    ランニングを使用し、些細:

    停止:

  • は/子供を停止/一時停止を実行してホットキーとマスタースクリプトを使用します:重要ではないが、 solutionsがある(基礎となる mechanicsも参照)。

関連する問題