001 ! 002 ! MSGBOX ボタンテスト 003 ! 004 005 はい_いいえ_キャンセル // 3つのボタン 006 007 MSG_BOX // メッセージ表示 3 ボタンを押してください! 008 Jump // はい? %MSGBOX%=6 はい 009 Jump // いいえ? %MSGBOX%=7 いいえ 010 Jump // キャンセル? %MSGBOX%=2 キャンセル 011 ! 012 はい MSG_BOX 「はい」が押されました! 013 Jump 再試行_キャンセル 014 いいえ MSG_BOX 「いいえ」が押されました! 015 Jump 再試行_キャンセル 016 キャンセル MSG_BOX 「キャンセル」が押されました! 017 Jump 再試行_キャンセル 018 ! -------- 019 再試行_キャンセル // 2つのボタン 020 MSG_BOX // メッセージ表示 5 ボタンを押してください! 021 Jump // 再試行? %MSGBOX%=1 はい_いいえ_キャンセル 022 Jump // キャンセル? %MSGBOX%=2 終了 023 ! 024 再試行 MSG_BOX 「再試行」が押されました! 025 Jump はい_いいえ_キャンセル 026 キャンセル_2 MSG_BOX 「キャンセル」が押されました! 027 Jump 終了 028 ! 029 終了 MSG_BOX 終了です。
リストボックス
リストボックス(LIST_BOX)とインプットボックス(INPUT_BOX)の使用例
30秒後に既定値を自動応答(リストボックス/インプットボックス共に空白が既定値となっている)
コードの使用方法
リストボックスで指定された監視間隔(秒)でCPU使用率を画面左上に連続表示する
コードの使用方法
リストボックスで指定されたプロセスを2秒平均のCPU使用率を
画面左上に連続表示する
使用する関数
ListBox :リストボックスを表示する
GetCpuUtilization:CPU使用率を取得する
Timer :秒タイマー
GetSplit :文字列を指定文字で区切った部分を切り出す
Format :文字列を指定書式に整形
コードの使用方法
演算
下記の例は
%REG1%に2をセット、(インプットボックスで入力された値+1)を2倍し、%REG1%の値と3を加算
の結果をメッセージボックスに表示します。
コードの使用方法
CPU使用率を5秒周期で連続表示します。
パラメータにプロセス名(部分指定可)を指定することにより、特定アプリのCPU使用率を表示することも可
(・・ただし、指定プロセスが無い場合や、複数個存在する場合のエラーチェックを組み込むことが必要となります。)
コードの使用方法
GetPoint
下記の例は
同梱の「あっちむいてホイ」を起動し、マウスポインタ位置(x = 230 , y = 315)のデータ
をメッセージボックスに表示します。
上記座標にあるボタンの文字「Start」(表示だけで実行はされない)が表示される。
コードの使用方法
下記の例は
画面上のポイント位置を変化させ、ポイントしているところの文字列をフォームに表示します。
変数 X Y を定義します。(本記述では % を省略)
位置の変化を、X座標に X 、Y座標に Yを使用し、それぞれ AddVariableにより変化させます。
Do〜Loop-Whileの繰り返しを使ってX座標の変化とY座標の変化の2段階ループ。
下地が無いと寂しいので、当ヘルプ画面と「電卓」を起動。
ポイント位置のデータは、X,Y座標を指定してGetPointで読み取り、%GetPoint%に格納されます。
表示は、SHOW_MSG内に%GetPoint%を記述しておくことで、自動的に表示(Waitで0.3秒待ち)
最後に AP_QUITにより、起動した2つのアプリを終了
少々、プログラミング的です。
補足
表示に於いては、下記のように記述している。
赤: Format(GetRValue(%Color%),"@@@") (Hex(GetRValue(%Color%)))
式の意味: %Color% に色コードが格納されている
GetRValue:色コードから赤色(R:Red)成分を取り出す
Format: 書式を指定、"@@@"は右詰3桁、先頭空白詰め。ちなみに、左詰は"!@@"
空白ではなく、ゼロ(0)詰めの場合は"000"と記述
Hex: 16進表記に変換
コードの使用方法
GetPixel/GetPixelPoint:指定座標位置の色を取得
下記の例は
画面上のポイント位置を変化させ、ポイントしているところの色をフォームに表示します。
位置の変化はX座標に REG1 、Y座標に REG2 を使用し、それぞれ AddRegにより変化させます。
ループはX座標の変化とY座標の変化の2段階ループ。
ポイント位置は、REG1とREG2でX,Y座標を指定してマウスを移動し、GetPixelPointで読み取ります。
表示は、SHOW_MSG内に、10進数と16進数の形式(Hex関数)で表示。
合わせて、各色成分(赤緑青)の値を10進数と16進数で表示。GetRValue,GetGValue,GetBValue
点(ピルセル)の色を取得するため、
白い文字の線上にポインタが来るとFFFFFF(白)、黒い文字の線上に来ると0(黒)になることに注目。
結構、プログラミング的です。
注意:本例でのWebページ上の表記数字は、画面の色深度32ビットの場合です。
色深度が16ビットの場合、表記の値と異なります。
補足:16進数表記順
B(青)G(緑)R(赤)の順となり、画面表記とは逆になっています。
SHowMsg、MsgBox内で関数記述
関数の前後に通常文字が接していると文字列と見なしてしまいます。
通常文字列と関数の間には半角空白を入れて下さい。
コードの使用方法
WaitImgChange ポイント位置近辺の画像変化を監視
下記の例は、ポイント位置近辺の画像変化を監視して、変化を検知したらメッセージボックスを表示します。
監視範囲は、指定位置(自動的にマウスポインタも移動)の上下左右8ピクセルの範囲内
→ 右図
編集フォームで「WaitImgChange」を選択すると、マウスを囲むようにピンク枠が表示されるので、その範囲内を目安に座標を指定すればよい。
動作概要
・実行すると、ダミーのアプリ「あっち向いてホイ」が起動される。
この時、信号は赤。
・8秒後に、信号が青になると、それを検知してメッセージボックスが表示される。
(最長30秒待つ。待ち時間を8秒以内にするとタイムアウト処理を確認できる。)
コードの使用方法
画像変化が即座に発生する可能性がある場合の検知
メモ帳に文字を入力して、その文字入力で画像が変化したかを検知する。
この場合、WaitImgChangeだけでは検知不可なので、WaitImgChangeInitを発行して、文字入力する前の比較ベース画像を取得しておく
CheckData
正規表現を利用してデータをチェックおよび必要箇所を抜き出します。
下記の例では、下図のようなYahooのトップページから「トピックス」の項目を抜き出します。
001 Set //保存ファイルパス FilePath %Desktop%\yahoo.txt 002 Set //URL Url http://yahoo.co.jp 003 Set //正規表現 Reg (トピックス(?:.|\n)*?[0-9]+時[0-9]+分更新(?:.|\n)*?の話題) 004 ! 005 FileInit //ファイル初期化 %FilePath% 006 IEGetDoc //ドキュメント取得 %Url% 007 CheckData //正規表現で文字列取得 %GotData% %Reg% 008 MSG_BOX //取得文字列表示 009 FileWrite //ファイルへ書込み %MatchData% %FilePath%006 Yahooのトップページのテキストドキュメントを取得。
データは %GotData% に格納される。
007 %GotData% に格納されているデータをチェック
正規表現
([0-9]+時[0-9]+分更新(?:.|\n)*?の話題) の意味
「"xx時xx分更新"の形式の文字で始まり、
、改行を含む任意の文字列、"の話題(xx件)"の文字で終わる文のカッコ内の文字」を意味する
[0-9]: 0 から 9 までの任意の数字1文字
.: 改行以外の任意の1文字
\n : 改行
.|\n : 改行以外の任意の文字、または改行 → 改行を含む任意の1文字
(|:「または」を意味する)
* : 正規表現の0回以上の繰り返し
+ : 正規表現の1回以上の繰り返し
( ) : グループ化(カッコ内が対象文字列としてキャッチアップされる)
(?:) : キャッチアップしないグループ
マッチした文字列は %MatchData% に格納される。
003 メッセージボックスにマッチした文字列を表示
正規表現の記号の意味と記述例は右リンクを参照 → 正規表現の記述例
Yahooトップページ
実行結果は下図
コードの使用方法
FileInit,FileWrite
正規表現を利用してデータをチェックおよび必要箇所を抜き出します。
下記の例では、右図のようなYahooのトップページから「トピックス」の項目を抜き出します。
ファイルはデスクトップに「yahoo.txt」のテキストファイルとして作成される。
001 FileInit %DeskTop%\yahoo.txt 002 IEGetDoc http://yahoo.co.jp 003 CheckData %GotData% (トピックス(?:.|\n)*?[0-9]+時[0-9]+分更新(?:.|\n)*?の話題) 004 MSG_BOX %MatchData% 005 FileWrite %MatchData% %DeskTop%\yahoo.txt001 テキストファイル「yahoo.txt」を初期化。無い場合は空のファイルを作成
002 Webドキュメントデータを取得。
003 正規表現を利用したデータのチェックと取得(上項の正規表現を利用したデータチェックを参照)
004 メッセージボックスにデータを表示
005 同データをファイル「%DeskTop%\yahoo.txt」に追記出力。「%desktop%」はデスクトップを表す
006 完了メッセージ表示
コードの使用方法
正規表現
正規表現を利用してバージョンと日付の部分を抜き出します。
下記の例では、当ウェブサイトからバージョンと日付を抜き出します。
結果は、メッセージボックスに表示。
001 IEGetDoc http://mt-soft.sakura.ne.jp/web_dl/petit_tool/mrecorder/frame/default.html 002 CheckData %GotData% Ver ([0-9.]+) [0-9./]{8,10}.*ダウンロード 003 MSG_BOX バージョン %MatchData% 004 CheckData %GotData% Ver [0-9.]+ ([0-9./]{8,10}).*ダウンロード 005 MSG_BOX 日付 %MatchData%正規表現部分 Ver [0-9.]+ [0-9./]{8,10}.*ダウンロード
"Ver" で始まり"ダウンロード"で終わる。その間の文字が、
0-9の数値、またはピリオドが一個以上 → 全角空白 → 0-9またはピリオド、スラッシュが8個以上10個以内
の部分を取り出す。結果は、右図のようになる。
()で括った部分がそれぞれ取り出される。
実際には、バージョン、日付ともに、もう少し厳密な表現式にしたほうがよいかも。
コードの使用方法
アプリの状態により待機します。
下記の例では、
1.メッセージを表示して
2.メモ帳が開くまで待機します。
3.メッセージを表示して、メモ帳が閉じるまで待機します。
4.完了メッセージを表示して終了(5秒後)
アプリの特定は、ウィンドウのタイトル(部分指定可)、クラス名のいずれか、または両方を指定します。
SHOW_MSG // MSG:メモ帳を開いて下さい pixel 0 340 248 699 459 0,-2147483643,0,0,-2147483640,12,MS Pゴシック,False,False,False,False, [%NL%]新規の「メモ帳」を開いてください。[%NL%]「メモ帳 - 無題」を検知したら次に進みます。[%NL%]00000 AP_Wait // 待機:メモ帳が開くまで 60000 未起動 無題 - メモ帳 SHOW_MSG // MSG:待機 pixel 0 340 248 699 459 0,-2147483643,0,0,-2147483640,12,MS Pゴシック,False,False,False,False, [%NL%]メモ帳を閉じると待機を解除して次に進みます。00000 AP_Wait // 待機:メモ帳が閉じるまで 60000 起動中 無題 - メモ帳 SHOW_MSG // MSG:完了 pixel 0 340 248 699 459 0,-2147483643,0,0,-2147483640,12,MS Pゴシック,False,False,False,False, [%NL%]メモ帳が閉じられました。51000
コードの使用方法アプリが開いている、または閉じているかを調べたいだけの場合は、IsApExist関数で判定できます。