スクリプト5 (起動しているかを調べる)PowerProでは指定したプログラムやウィンドウが存在しているかなどを調べることができます。それを条件判断などと組み合わせて使うと より便利です。 プログラムが起動しているかなどを調べるのに特定のキーワードを使います。それは「AnyWindow」、「VisibleWindow」、「ActiveWindow」 の3つです。 ◆ AnyWindowAnyWindowはウィンドウが見えないプログラムも含めて全ての動いているプログラムやウィンドウの中から特定のプログラムがあるかを調べるときに使います。 全てのプログラムから探すので確実に起動しているかどうかを調べることができます。使い方は「AnyWindow」のあとに探したいターゲット(キャプションリスト)を書きます。ターゲットの書き方はスクリプト3を 見てください。例えばメモ帳が起動しているかを調べるときは次のようにします。 AnyWindow "=notepad"メモ帳を指定するときのキャプションリストの書き方は他にも"*メモ帳"なども使えるかもしれません。 しかしこれだけ書いたところでどうやって起動しているかどうかを知るんだ?という話になります。実は指定したターゲットウィンドウがあったとき AnyWindow "〜" は「1」を返してきます。どういう意味だ?と思った人もいるかもしれません。それではためしにAnyWindow "〜"を変数に代入してみましょう。 Var = AnyWindow "=notepad" Debug &(Var)メモ帳が起動しているときにこのスクリプトを実行してください。 ![]() メモ帳が起動しているときに実行すると上図のように「1」が表示されるはずです。つまり変数Varの中身は1であるので「AnyWindow "=notepad"」 も「1」であると言うことができますね。 今度はメモ帳を起動させていない状態でさっきのスクリプトを実行してみてください。Varには「0」が入っているはずです。つまり 指定したウィンドウがないときはAnyWindow "〜" は「0」を返してきます。このAnyWindow "〜"が「1」か「0」かでウィンドウのあるなしがわかるのです。 具体的にIf文の中で使って見ましょう。
If(AnyWindow "=notepad" == 1)do
Debug メモ帳は起動しています
Else
Debug メモ帳は起動してません
Endif
見ればわかると思いますが起動していれば「AnyWindow "=notepad"」が1を返してくるので上のような条件式になります。
メモ帳を起動しているときとしてないときとでこのスクリプトを実行してみてください。また起動しているかを調べるときIf文の条件式は単に「AnyWindow "〜"」だけでもいいです。例えば次のようにです。
If(AnyWindow "=notepad")do
Debug メモ帳は起動しています
Else
Debug メモ帳は起動してません
Endif
どうしてこれだけでいいかは簡単に言うとコンピュータ(プログラム?)の中では「1」はTrue、「0」はFalseとなっているからです。
わからなくてもいいですがこのような書き方もできることは知っておいたほうがいいと思います。それでは「起動していないならば」という条件を書くにはどうしたらいいでしょうか。起動してないときはAnyWindow "〜"が 「0」を返すのでしたね。さっきと同じように考えると次のようになります。
If(AnyWindow "=notepad" == 0)do
Debug メモ帳は起動してません
Else
Debug メモ帳は起動しています
Endif
Debugのメッセージが逆になっていることに注意してください。もう一つの表現として「not」を使う方法もあります。
If(not AnyWindow "=notepad")do
Debug メモ帳は起動してません
Else
Debug メモ帳は起動しています
Endif
「not」は結果をひっくり返すキーワードです。つまり正しければ正しくないにします。こういう表現もあることを知っておくと便利です。◆ VisibleWindowこれもAnyWindow同様ウィンドウがあるかないかを調べるキーワードですが、AnyWindowとの違いは見えているウィンドウの中から指定したウィンドウを 探すことです。AnyWindowはウィンドウが見えないプログラムからも探せますがVisibleWindowは見えるウィンドウからしか探せません。 つまりプログラムが起動していてもウィンドウが見えないプログラムの場合はVisibleWindow "〜"は「0」を返してくるということです。 見える見えないというのがあいまいで私もいまいちよくわかってないのですがとりあえずウィンドウがあるプログラムは探せる、とだけ知っておけばいいと思います。 最小化されていて一時的に見えないものも検索対象になるようです。使い方はAnyWindowとまったく一緒です。VisibleWindowの後にキャプションリストを書いてください。 例えばメモ帳は明らかに目に見えるウィンドウを持っていますね。だからVisibleWindowが使えます。 If(VisibleWindow "=notepad")doのように書きます。AnyWindowとまったく同じですね。 ◆ ActiveWindowこれは指定したウィンドウがアクティブかそうでないかを調べるものです。アクティブというのはタイトルバーの色が(通常は)濃い状態のことを言います。 使い方はこれまでの2つとまったく同じです。例えば次のスクリプトをメモ帳がアクティブなときとそうでないときとで実行して違いを調べてみてください。
If(ActiveWindow "=notepad")do
Debug メモ帳はアクティブ
Else
Debug メモ帳は非アクティブ
Endif
以上のキーワードはほとんどIf文の中で使われると思います。ぜひ使いこなして自分にとって便利なスクリプトを書いてみてください。 スクリプト4へ トップへ スクリプト6へ |