2013-04-24 25 views
6

AutoHotKeyを使用すると、私はキーのストロークで壊すことができる、かなり単純なループスクリプトを持っています。私はウェブサイトからいくつかの異なるコードを試しましたが、うまくいかないようです。AutoHotKeyキーストロークブレイクループ

#g:: 
Loop 20 
{ 
    MouseClick, left, 142, 542 
    Sleep, 1000 
    MouseClick, left, 138, 567 
    Sleep, 1500 
    MouseClick, left, 97, 538 
    Sleep, 1000 
} 

答えて

1

あなたのループが完了するまでにしばらく時間がかかりますので、あなたのケースのための最も簡単な解決策であるかもしれないグローバル変数を追加:

は、ここでは、コードです。

global break_g = 0 

#b:: 
    break_g = 1 
return 


#g:: 
break_g = 0 
Loop 20 
{ 
    MouseClick, left, 142, 542 
    Sleep, 1000 
    MouseClick, left, 138, 567 
    Sleep, 1500 
    MouseClick, left, 97, 538 
    Sleep, 1000 
    if(break_g = 1) 
    { 
     return 
    } 
} 
return ; also you were missing this return 
+0

これは機能しません。ありがとうございました。瞬間停止が最高ですが、私はこれに満足しています。 – Dave

+0

@DaveすべてのMouseClickの前にifステートメントを置くだけです。 –

+0

が意味を成している、私はそれを試してみましょう。もう一度ありがとう – Dave

0
#g:: 
Loop 20 
{ 
    KeyWait,Ctrl,D T0 
     if Errorlevel = 0 
      break 
    MouseClick, left, 142, 542 
    KeyWait,Ctrl,D T0 
     if Errorlevel = 0 
      break 
    Sleep, 1000 
    KeyWait,Ctrl,D T0 
     if Errorlevel = 0 
      break 
    MouseClick, left, 138, 567 
    KeyWait,Ctrl,D T0 
     if Errorlevel = 0 
      break 
    Sleep, 1500 
    KeyWait,Ctrl,D T0 
     if Errorlevel = 0 
      break 
    MouseClick, left, 97, 538 
    KeyWait,Ctrl,D T0 
     if Errorlevel = 0 
      break 
    Sleep, 1000 
} 

return 

効果は瞬時であるように、上記を使用して役立つことができます。多くの場合、Ctrlキーを押したままにするとループが停止します。

+0

コードに欠陥があります。あなたはスリープが実行されたときにそれを保持し始めると、スリープ時間の完全な持続時間の間、Ctrlキーを押さなければなりません。だから効果は瞬間から遠いです。あなたは同じコマンドを6回複製しましたが、あなたは繰り返してはいけません。もしOPがホットキーを変更したいのであれば、6回以上実行してください。ループ全体が中断されるべきではない単一のコマンドであるかどうかはわかりません。私のメソッドを使用すると、ループの終了を達成したいときにいつでもifステートメント(必要に応じて、それはユーザー次第です)を置くことができます。 –

+0

@armin、私はその睡眠の事実を知っています。(私は "よく使われていない"よりも多くのことをしています)また、私の答えは一般的に質問に特有であり、一般的な状況ではありませんでした。 (daveのスクリプトは小さいので、私は6回繰り返すことができます)。 ** break_g **が「グローバル」である必要はありません。私はあなたが私のコードからその点を編集したのを見ます。 – Avi

+0

これをコメントにする必要があるので、編集しました。 –

0

グローバル変数をトグルする方法があります。スクリプトの最初にそれを宣言する必要があります。

グローバルkeep_working = 1;スクリプトの先頭でブレークをオフに設定します。

b ::;休憩を設定する keep_working = 0 返信

g ::;ループを開始してループを開始します。 keep_working = 1
ループ。 Bが押されるループまで左左 { MouseClickと、左、142、542 スリープ1000 MouseClickと、138、567 スリープ1500 MouseClickと、、97、538 スリープ(元のコードのループ、20でした) 、1000 if(keep_working = 0) { return;実行を停止する必要があります } } return;この区切り文字は、ホットキー処理の最後に必要です。

2

グローバル変数(keepCycling)を使用して、ループを解除するためにそれを切り替えます。グローバル変数は、スクリプトの先頭で宣言する必要があります。

関連する問題