プログラムサンプル

段落(灰色)のダブルクリックすると段落文字列を選択できます。

  コピーして「PCの見張り番」(エキスパートモード)の編集エリアに張り付けて使用して下さい。

EXPERTモード − プログラム機能
OS判定 OSバージョンを取得してOS名を表示、および、各種システム情報を表示
ループと条件判定
 $do 〜 $while-loop 10回メッセージ表示、$if により5回目以下は文字赤

文言出現監視 文言を関数を使って監視、検出詳細を表示可能

指定時刻まで待機(1)−ループ使用 指定した時刻まで待機する−残時間を表示
指定時刻まで待機(2) 同上−/wait-until コマンドで処理を簡略化

ポイント位置の色コード取得
 マウスポインタ直下の色を取得、RGBの成分表示。エスケープキーで停止
指定位置の文字列を監視
 YAHOOの検索ボックスに指定の文字列を含む文字列が入力されるかを監視
ポイント位置の文字列取得
 マウスポインタ直下の文字列および、MS ACC の各種情報を取得して表示

CPU使用率監視 CPU使用率を30秒間計測して、その結果を表示
CPU使用率連続表示 2秒後とのCPU使用率を計測表示、計測総時間−30秒
CPU使用率−個別プロセス監視
 指定のプロセスを監視し、使用率がオーバーした場合に所定の処理を行う
CPU使用率−個別プロセス(リストから選択)
 リストボックスから選択したプロセスのCPU使用率を計測する

プロセスIDからプロセス名取得 プロセスリストを作成しプロセス名を取得
プロセス強制終了 プロセス一覧を作成し、指定されたプロセスを強制終了する
プロセス排他起動 メモ帳を閉じると電卓を起動、メモ帳を開くと電卓を終了

イメージ変化監視 指定位置の画像が変化するかを監視
イメージ変化を継続監視
 画像変化時にボタン(「スタート」)をクリック(2回)して、再度、継続監視
イメージ変化監視(変化率取得) 指定時間監視し、変化した部分の面積比を表示

関数コール ユーザー関数( SqrAvg() )を使って二乗平均を求める
 さらに、関数内から、ユーザー関数( DspMsg() )を呼び出す。
同、インクルードファイル 関数部をインクルードとして別ファイルにする

IEデータ取得 IEのウェブページからデータを取得(YAHOO)
IE項目詳細取得 チェックボックス どの項目がチェックされているかを調べる
IE項目詳細取得&設定 ラジオボタン
 ラジオボタンの全項目名と選択インデックスを取得してリストボックスに再現
IE項目詳細取得&設定 プルダウンメニュー
 都道府県の全項目名と選択インデックスを取得してリストボックスに再現
IE項目詳細取得&設定 リストボックス
 東京23区の全項目名と選択インデックスを取得してリストボックスに再現
IEの指定タグの属性情報を取得する
 種別とキーワードでタグを探し出してポイントし、そのタグの詳細属性を取得する
IEデータ設定
 IEのウェブページにさまざまなデータを設定して送信する(ダミーページ)
IE自動応答
 IEの送信確認に対するダイアログボックスに自動応答する
IEデータ設定(CSVファイルから)
 CSVファイルを読み込んで、IEウェブページに設定して送信する
IEタブ操作の実演例
 IEの起動、タブ追加、タブ切替、検索/リンク先への移動などの操作例

エクセルデータ設定
 エクセルを起動し、データ設定、読み込みなどを行い、ブックを閉じる

メモ帳操作 /key-sendによるメモ帳への連続文字列入力
メモ帳入力&書式変更
 フォントダイアログ操作により、書式(スタイルとフォントサイズ)を変更
メモ帳書式変更−短コマンド  /wait を省き、処理速度を上げる
メモ帳−メニュー項目チェックをオン/オフ
 トグル形式のメニューチェック状態を常にオン(またはオフ)の状態にする

電卓操作 起動→関数電卓→桁区切りオン→  99 x^y 9 = を計算、 ×で閉じる
ワードパッド操作 ワードパッド起動→書式設定ボタン→入力→閉じる

通常モード − 本体監視機能とコマンドの組み合わせ
キャプチャー&メール送信
 画像監視とメール送信を組み合わせて、変化画像をメール添付で送信
デスクトップ定期観測&メール送信
 定期的にデスクトップ画像をメール送信可能。


OS判定

OSバージョンを取得してOS名を表示、および、各種システム情報を表示
# OS判定  ///////////////////////////////////////////////
#    OSバージョンを取得してOS名を表示
#  および、各種システム情報を表示
#////////////////////////////////////////////////////////

   $set FColor=RGB(0,0,255)      '青
   $set BColor=RGB(230,255,255)  '薄い水色

   /message-show "現在 Format(Now(),yyyy/mm/dd hh:nn:ss)\n\nOS名:        GetOsName()\nVersion:     GetOsVersion()\nPlatformID:  GetOsPlatform()\n64bitCPU:    CBool(Is64bit())\n\nInternet:    CBool(IsInetConnect())\nIP  address: GetIPAddress()\nMac address: GetMacAddress()\n\nDef.printer: GetDefaultPrinter()\nPC name:     GetPcName()\nUser name:   GetUserName()\n\nScreen size: GetScreenX() x GetScreenY()",10,,,,,,24,%FColor%,%BColor%,"MS ゴシック"





ループと条件判定

$do 〜 $while-loop 10回メッセージ表示、$if により5回目以下は文字赤
# ループと条件判定 //////////////////////////////////////
#
#  リストボックスの使用、キーによる停止、ループ離脱
#
#   $do 〜 $while-loop 10回メッセージ表示
#   $if により5回目以下は文字赤
#////////////////////////////////////////////////////////

    $set n = ListBox("回数を選択","1\n2\n3\n4\n5\n6\n7\n8\n9\n10",8,,,150,250,12)

    $if %n% == "" $end                   'キャンセル→終了

    $call MsgBox("「ESC」キーで中止します")

    $do

         $if %n%<=5  '5以下?
          /message-show %n%,2,,,,,,144,"rgb(255,,)" '赤
         $else '以外
          /message-show %n%,2,,,,,,144,"rgb(,255,)" '緑
         $endif

         $set n -= 1 '1 減算

         $if IsKeyPressed(27)  $exit-loop   'ループオフ

    $loop-while %n%>0

    $end

文言出現監視

文言を関数を使って監視、検出詳細を表示可能
# 文言出現監視 /////////////////////////////////////////
#////////////////////////////////////////////////////////
#
# 関数を使って文言監視を行う
# 
# マッチした文字列が返却されるので判り易い
#
# GetMsgAppear("%監視文言%",1,0)
#
#  大阪市.+区−大阪市xxx区 の文字列を含むウィンドウ 
#   1    −正規表現「.+」(任意の1個以上の文字)
#   0    −IEを監視対象に含めない
#
#
# 注:IEを監視対象に含める場合、このウィンドウを開いていると、
#   このウィンドウ内の文字列に反応するので注意!
#

        $set 監視文言=InputBox("監視する文言を入力して下さい","文言入力","大阪市.+区")

        $if %監視文言% == ""  $end   'キャンセル→処理終了

        $set LpSw = 1                   'ループスイッチオン

        $do-while %LpSw%

                $set Str = GetMsgAppear(%監視文言%,1,0)

                $if %Str% <> ""         '検出!

                        /msg %Str%
                        $set LpSw = 0   'ループスイッチオフ

                $endif

                /wait 1000      '監視周期

        $loop

指定時刻まで待機(1)残時間表示

指定した時刻まで待機する−残時間を表示
# 指定時刻まで待機(1)残時間表示 /////////////////////
#////////////////////////////////////////////////////////

$set Default=Format(Now()+Timeserial(0,2,0),"hh:nn")  '2分後−InputBoxの既定値

Retry: $set 予定時刻=InputBox("予定時刻を入力して下さい。\n\n例: %Default%","指定時刻まで待機",%Default%)

       $if %予定時刻% == ""  $end                      'キャンセル
       $if IsDate(%予定時刻%) == false                 '時刻形式で無い
           $call MsgBox("入力値が正しくありません!")  'エラーメッセージ
           $goto Retry                                 '再入力
       $endif

       $do-while 1         '無限ループ

           $set t=CDate(Today())+CDate(%予定時刻%)-Now()  '残時間計算
           /message-show "Format(%t%,hh:nn:ss)",-1,,0,0   'Modeless表示

           $if %t% <= 0    $exit-loop                     '残時間が0以下→終了

           /wait 1000      'CPU負荷軽減の為、1秒間隔でループ

       $loop

       /sound sound-no:2 time:5

       $call MsgBox("ちょうど時間となりました!")

       $end

指定時刻まで待機(2)残時間はタイトルバーに表示

/wait-until コマンドで処理を簡略化
# 指定時刻まで待機(2)残時間はタイトルバーに表示 /////
#////////////////////////////////////////////////////////

$set Default=Format(Now()+Timeserial(0,2,0),"hh:nn")  '2分後−InputBoxの既定値

Retry: $set 予定時刻=InputBox("予定時刻を入力して下さい。\n\n例: %Default%","指定時刻まで待機",%Default%)

       $if %予定時刻% == ""  $end                      'キャンセル
       $if IsDate(%予定時刻%) == false                 '時刻形式で無い
           $call MsgBox("入力値が正しくありません!")  'エラーメッセージ
           $goto Retry                                 '再入力
       $endif

       /wait-until %予定時刻%

       $call MsgBox("ちょうど時間となりました!")

       $end

ポイント位置の色コード取得

マウスポインタ直下の色を取得、RGBの成分表示。エスケープキーで停止
# ポイント位置の色コード取得 //////////////////////////////////////////
#////////////////////////////////////////////////////////
#
# マウスポインタ直下の色を取得し、RGBの成分に分解 
# 無限ループにて、それぞれの色コードを10進と16進数で表示
#
# ・実行中はフォームを最小化
# ・「エスケープ」キーで停止
#
# ちらつき防止の為に色に変化が無い場合は再表示しない。
#
# − エスケープキーで停止

        $set rc = MsgBox("「ESC」(エスケープ)キーで停止します。\n\nキャンセル → 処理中止"\n\n → 本体は最小化,1,"開始確認")

        $if %rc% == 2    $end   'キャンセル→終了

    $call SetWindowState(,"minimized")  '最小化

        $set color = 0

        $set LpSw = 1         'ループスイッチオン

        $do-while %LpSw%

                $set c=GetPixelPoint()  'ポイント位置

                $if %c% <> %color% 

                        $set color=%c%                                  'ポイント位置の色
                        $set r=GetRValue(%color%)       '赤成分
                        $set g=GetGValue(%color%)       '緑成分
                        $set b=GetBValue(%color%)       '青成分

                        /msg "%color%(Hex(%color%))\n 赤成分:%r%(Hex(%r%))\n 緑成分:%g%(Hex(%g%))\n 青成分:%b%(Hex(%b%))\n\n「ESC」キーで停止",-1,,10,10      'モードレスメッセージウィンドウ

                $endif

                $if IsKeyPressed(27)  $set LpSw = 0   'ループスイッチオフ

        $loop

    $call SetWindowState(,"normal")  '元のサイズに戻す

        $end

指定位置の文字列を監視

YAHOOの検索ボックスに指定の文字列を含む文字列が入力されるかを監視
# 指定位置の文字列を監視 //////////////////////////////
#////////////////////////////////////////////////////////
#
# YAHOOを起動して検索ボックス内の文字列を監視する
#
# 指定の文字列−ここでは"This is a pen." を含む文字列
# が入力されたら、左上に入力文字の全文を表示する。
#

    $set target_string = "This is a pen."
    $set compare   = 1         '大小文字を区別しない 0:区別する
    $set id        ="srchtxt"  '検索ボックス名
    $set time_span = 2         '監視間隔(秒)

    # YAHOOを新しいウィンドウ、最大で開く
    $set rc= SetIeNavigate("http://www.yahoo.co.jp/",-1,2) 

    $set rc= SetIePoint("id",%id%)           '指定位置をポイント
    $set x = GetCursorPosX()                 'マウス座標を取得
    $set y = GetCursorPosY()

    /message-show "検索ボックスに文字列を入力してみて下さい。\n\n %target_string% \n\n を含む文字列入力するとヒットします。\n\n 本体は最小化します。 \n\n",999

    $call SetWindowState(,"minimized")  '最小化

Retry:
    $set rc = GetAccValue(%x%,%y%)              '文字列を取得
    $if InStr(%rc%,%target_string%,%compare%)>0 '含まれる?
        $call DspMsg(%rc%)
    $endif
    /wait %time_span%*1000    '待機
    $goto Retry               'リトライ

    #-----------------------------------------
    # ユーザー関数
    #-----------------------------------------
    $function DspMsg(msg)
        /msg "ヒット − %msg%",4,,0,0
    $return



ポイント位置の文字列取得

マウスポインタ直下の文字列および、MS ACC の各種情報を取得して表示
# ポイント位置の文字列取得 /////////////////////////////
#////////////////////////////////////////////////////////
#
# マウスポインタ直下の文字列を取得 
# ・実行中はタスクトレイに収納
# ・「エスケープ」キーで停止
#
# ちらつき防止の為に文字情報に変化が無い場合は再表示しない
#

        $set rc = MsgBox("「ESC」(エスケープ)キーで停止します。\n\nキャンセル → 処理中止"\n\n → 本体はタスクトレイに収納,1,"開始確認")

        $if %rc% == 2    $end   'キャンセル→終了

    $call SetTaskTray("in")    'タスクトレイ収納

        $set Accid=""

        $set LpSw=1        'ループスイッチオン

        $do-while %LpSw%           'ループスイッチがオンの間実行

           $set n=GetAccName()             'ポイント位置 AccName

           $if %n% <> %AccName% 

               $set Accid=%n%

               /msg "Name:%AccName% \nValue:GetAccValue()\nRole :GetAccRole()\nDesc.GetAccDescription()\nAction:GetAccDefaultAction() \n\n「ESC」キーで停止",-1,,10,10,350,200,15      'モードレスメッセージウィンドウ

           $endif

           $if IsKeyPressed(27)  $set LpSw = 0   'エスケープキー → ループスイッチオフ

        $loop

    $call SetTaskTray("out")    'タスクトレイから出す

        $end

CPU使用率

CPU使用率を30秒間計測して、その結果を表示
# CPU使用率 //////////////////////////////////////////
#////////////////////////////////////////////////////////
#
# CPU使用率を20秒間計測して結果を表示
#

     $set time_span = 20                     '計測時間(秒)
     $set limit     = 5                      '限界値(%)
     $set proc_name = ""                     'プロセス名(空白時はCPU全体)

        # $set proc_name = ""   'プロセスを指定する場合(部分入力可)

     /msg "計測開始 %time_span%秒間",-2

     $set cpu_utl=GetCpuUtilization(%proc_name%,%time_span%)

     $if %cpu_utl% == -1 

        /msg "指定プロセス %proc_name% 無し"

     $elseif %cpu_utl% == -2

        /msg "指定プロセス %proc_name% 複数マッチ"

     $else

        $set msg = "CPU使用率 = Format(%cpu_utl%,'0.0') %    %proc_name% %time_span%秒間"

        $if %cpu_utl% > %limit%

                $set msg += "\n\n %limit% %を超えていましたヨ! "

        $endif

        /msg %msg%

     $endif

     /msg "計測終了",2

     $end

CPU使用率連続表示

2秒後とのCPU使用率を計測表示、計測総時間−30秒
# CPU使用率連続表示 //////////////////////////////////
#////////////////////////////////////////////////////////
#  2秒周期でCPU使用率を計測して表示。30秒間
#  /msg の時間に -1 を指定することでモードレスにメッセージ表示
#

     $set total_time = 30  '計測総時間(秒)
     $set time_span = 2    '計測周期(秒)

     $call timer(0)    '秒タイマー初期化

     $do

        $set CpuUtl = "Format(GetCpuUtilization(,%time_span%),'0.00')%"

        $set t = %total_time% - timer()  '残り秒数

        /msg "%CpuUtl%  残Format( %t%,'0.0')秒",-1

     $loop-while %t% > 0

     /msg "計測終了",2

CPU使用率−個別プロセス

指定のプロセスを監視し、使用率がオーバーした場合に所定の処理を行う
# CPU使用率−個別プロセス ///////////////////////////
#////////////////////////////////////////////////////////
#
#  指定したプロセスのCPU使用率を計測
#  使用率が限界値をオーバーした場合、所定の処理を行う
#  本例ではウィンドウズ・メディアプレーヤーを監視

     $set proc = "wmplayer.exe" '監視するプロセス名
     $set total_time = 60       '計測総時間(秒)
     $set time_span = 2         '計測周期(秒)
     $set limit = 10            '使用率限界値(%)

     $call timer(0)    '秒タイマー初期化

     $do

        $set CpuUtl =GetCpuUtilization(%proc%,%time_span%)

        $if %CpuUtl% == -1
            $call MsgBox("指定のプロセスは存在しません! \n\n %proc%")
            $end
        $elseif %CpuUtl% == -2
            $call MsgBox("指定のプロセスは複数個マッチしました! \n\n %proc%")
            $end
        $endif

        $set t = %total_time% - timer()  '残り秒数

        /msg "%proc% \n Format(%CpuUtl%,'0.00')%  残Format( %t%,'0.0')秒",-1,,GetScreenX()-320,GetScreenY()-180

        $if %CpuUtl% > %limit%     '限界値オーバー?

            # ここにオーバーした場合の処理を記述 ----

            $call MsgBox("Over Value format(%CpuUtl%,'0.0')%")

            # プロセス強制終了
            # $call TerminateProcess( %proc% ) '複数個有ったら全てを終了

            $end

            # ---------------------------------------

        $endif

     $loop-while %t% > 0

     /msg "計測終了",2

CPU使用率−個別プロセス(リストから選択)

リストボックスから選択したプロセスのCPU使用率を計測する
# CPU使用率−個別プロセス(リストから選択) /////////
#////////////////////////////////////////////////////////
#
#  リストから選択したプロセスのCPU使用率を計測

     $set total_time = 60       '計測総時間(秒)
     $set time_span = 2         '計測周期(秒)
     $set limit = 10            '使用率限界値(%)

     $set Procid=""           'プロセス名
     $set ProcId=0              'プロセスID

     $set Idx=0

     $set ListTitle="プロセス一覧 No Id Name ThreadCnt ParentId Priority"
     $set ListItem=""


#-- プロセスリスト作成 ---------------------

     /message-show "プロセス一覧作成中・・・",-1

     $do

         $set Idx +=1

         # それぞれの項目値を取得

         $set Procid=GetProcessInfo(%Idx%,1)
         $set ProcId=GetProcessInfo(%Idx%,3)

         $if %ProcId% =="" $exit-loop       'IDが空白→終了

         $set ListItem += format(%Idx%,"@@@"){tab}Format(%ProcId%,"@@@@"){tab}%ProcName%\n

     $loop-while %ProcId% <> ""  'プロセスIDが空白で無い間ループ

     /message-close



#-- リスト表示&項目選択 -------

     $set rc=ListBox(%ListTitle%,%ListItem%,2,,,,,11,5 10 30 35 40)  'リストボックス表示

     $if %rc% == "" 

         $end   'キャンセル

     $endif


#-- 計測処理 -------------------

     $set ProcId=GetSplit(%rc%,"{tab}",2)     'プロセスIDを切り出す
     $set Procid=GetSplit(%rc%,"{tab}",3)   'プロセス名を切り出す

     $call timer(0)    '秒タイマー初期化

     /message-show "計測開始",1

     $do

         $set CpuUtl =GetCpuUtilization(%ProcName%,%time_span%,%ProcId%)

         $if %CpuUtl% == -1
             $call MsgBox("指定のプロセスは存在しません! \n\n %ProcName%")
             $end
         $elseif %CpuUtl% == -2
             $call MsgBox("指定のプロセスは複数個マッチしました! \n\n %ProcName%")
             $end
         $endif

         $set t = %total_time% - timer()  '残り秒数

         /msg "%ProcName% \n Format(%CpuUtl%,'0.00')%  残Format( %t%,'0.0')秒",-1,,GetScreenX()-320,GetScreenY()-180

     $loop-while %t% > 0

     /msg "計測終了",2

プロセスIDからプロセス(ファイル)名を取得

プロセスを検索して一致するIDのプロセス名を取得
# プロセスIDからプロセス(ファイル)名を取得 ////
#////////////////////////////////////////////////
#
# 入力するIDは、Ctrl+Alt+Del にてタスクマネージャを起動して
# 選んで下さい。
#

Retry:

   $set ProcId = InputBox("プロセスIDを入力して下さい","プロセスID入力",0)

   $set ProcName = ""

   $if %ProcId% == "" $end


   $set Idx = 0     'インデックス

   $do '検索開始

      $set Idx += 1  'インデックスアップ

      $set rc = GetProcessInfo(%Idx%,3)          'プロセスID取得

      $if %rc% == ""        $exit-loop           'インデックスオーバー

      $if %rc% == %ProcId%  'ID一致?

          $set ProcName = GetProcessInfo(%Idx%,1) 'プロセス名

          $exit-loop

      $endif

   $loop while 1

   $if %ProcName% == ""

      $call MsgBox("指定のIDは見つかりませんでした。",,"無し")

      $goto Retry

   $else

      $call MsgBox("お探しの ID=%ProcId% は、\n\n %ProcName% \n\n です。",,"発見")


   $endif

プロセス終了ツール

プロセス一覧を作成し、指定されたプロセスを強制終了する
# プロセス終了ツール ///////////////////////////////
#////////////////////////////////////////////////////
#
# プロセスリストを表示して、
# 選択されたプロセスを強制終了させる
#
#////////////////////////////////////////////////////

$set Procid=""    'プロセス名
$set ProcId=0       'プロセスID
$set ThreadCnt=0    'スレッド個数
$set ParentId=0     '親プロセスID
$set Priority=0     'プライオリティ
$set Idx=0

$set ListTitle="プロセス一覧 No Id Name ThreadCnt ParentId Priority"
$set ListItem=""

#-- プロセスリスト作成 ---------------------

/message-show "プロセス一覧作成中・・・",-1

$do

   $set Idx +=1

   # それぞれの項目値を取得

   $set Procid=GetProcessInfo(%Idx%,1)
   $set ProcId=GetProcessInfo(%Idx%,3)
   $set ThreadCnt=GetProcessInfo(%Idx%,4)
   $set ParentId=GetProcessInfo(%Idx%,5)
   $set Priority=GetProcessInfo(%Idx%,6)

   $if %ProcId% =="" $exit-loop       'IDが空白→終了

   $set ListItem+= Format(%Idx%,"@@@"){tab}Format(%ProcId%,"@@@@"){tab}%ProcName%{tab}Format(%ThreadCnt%,"@@@"){tab}Format(%ParentId%,"@@@@"){tab}Format(%Priority%,"@@@")\n

$loop-while %ProcId% <> ""  'プロセスIDが空白で無い間ループ

/message-close



#-- リスト表示&項目選択 -------------------

$set rc=ListBox(%ListTitle%,%ListItem%,2,,,,,11,5 10 30 35 40)  'リストボックス表示

$if %rc% == "" 

   $end   'キャンセル

$else

   #-- プロセス終了処理 --------------------

   $set ProcId=GetSplit(%rc%,"{tab}",2)     'プロセスIDを切り出す
   $set Procid=GetSplit(%rc%,"{tab}",3)   'プロセス名を切り出す

   $set msg="%ProcId% %ProcName% を終了させてよいですか?"
   $set rc=MsgBox(%msg%,1+256,"プロセス終了確認")  'OK キャンセル  - キャンセルボタンを既定値
   $if %rc% == 1  'OK
       $set rc=MsgBox("本当に終了させてよいですか?",1+256,"再確認")
           $set rc=TerminateProcess(%ProcName%,%ProcId%)
           $if %rc% == 0               $call MsgBox("完了!")
       $endif
   $endif

$endif

プロセス排他起動

メモ帳を閉じると電卓を起動、メモ帳を開くと電卓を終了

確認手順

1.本プログラムを実行 →電卓が起動される
2.メモ帳を開く  →電卓が閉じる
3.メモ帳を閉じる →電卓が起動される

以降、メモ帳が開いていると電卓は閉じ、メモ帳を閉じると電卓が起動します。
電卓を閉じても、またすぐに、再起動されます。

注意

IsApExit:クラス名、または、ウィンドウタイトルを元に起動しているウィンドウを調べます。
 ここでは、クラス名を省略して、ウィンドウタイトル名のみで探索。

 "メモ帳"とすると、ウィンドウタイトルに"メモ帳"が含まれるウィンドウ全てが対象となります。
 ウィンドウタイトルが完全に一致するものだけを対照としたい場合は、正規表現を使用して、
 "^メモ帳$" のように記述します。意味;^行頭、$行末を表すメタ文字

 詳しくは、IsApExist および 正規表現 を参照
# プロセス排他起動
#/////////////////////////////////////////
# 無限ループ
#  メモ帳が起動していたら電卓を閉じる
#  メモ帳が起動していなかったら電卓を起動
#
$do-while 1  '無限ループ
  $if IsApExist(,メモ帳)=1  'メモ帳起動中?
    $if IsApExist(,電卓)=1    '電卓起動中
       /window-quit 電卓        '電卓終了
    $endif
  $else                     'メモ帳起動無し
    $if IsApExist(,電卓)=0    '電卓起動無し?
      /window-open calc         '電卓起動
    $endif
  $endif

  /wait 500  '0.5秒待ち
$loop

イメージ変化監視

指定位置の画像が変化するかを監視
# イメージ変化監視 //////////////////////////////////////
#////////////////////////////////////////////////////////
#
# イメージの変化を監視する−座標(100,100)幅高48pixel
# 最大待ち時間 10秒
#

Retry: $set tMax = InputBox("制限時間(秒)を入力","入力",10)
       $if %tMax% == ""           $end         'キャンセル
       $if IsNumeric(%tMax%) == 0 $goto Retry  '非数値
       $if %tMax% <= 0            $goto Retry  '負

       $call Timer(0)             '秒タイマー初期化
       $set rc = WaitImgChange(1000*%tMax%,100,100,48,48)    'イメージ変化待ち
       $set t = Timer()           '秒タイマー

       $switch %rc%

           $case 0  '正常
                    /msg "変化を検知 − Format(%t%,'0.00')秒",,,,,,,48,"RGB(,,255)" '青文字
           $case 1  'タイムアウト?
                    /msg "タイムアウト",,,,,,,48,"RGB(255,,)"      '赤文字
           $default 'その他
                    /msg "その他のエラー",,,,,,,48
 
       $end-switch

イメージ変化を継続監視

画像変化時にボタン(「スタート」)をクリック(2回)して、再度、継続監視
# イメージ変化を継続監視 ///////////////////////////////
#////////////////////////////////////////////////////////
#
# イメージの変化を監視する−座標(100,100)幅高48pixel
# 変化があったら、左下隅(「スタート」ボタン(Win7の場合))をクリック
# 最大待ち時間 10秒
#

Retry: $set tMax = InputBox("制限時間(秒)を入力","入力",10)
       $if %tMax% == ""           $end         'キャンセル
       $if IsNumeric(%tMax%) == 0 $goto Retry  '非数値
       $if %tMax% <= 0            $goto Retry  '負

           $do-while 1	'継続ループ

               $call Timer(0)             '秒タイマー初期化
               $set rc = WaitImgChange(1000*%tMax%,100,100,48,48)    'イメージ変化待ち
               $set t = Timer()           '秒タイマー開始

               $switch %rc%

                   $case 0  '正常
                       /mouse-leftclick 30,-20	'左下隅(「スタート」キー?)をクリック
                       /wait 1000					'1秒そのまま
                       /mouse-leftclick 30,-20	'左下隅(「スタート」キー?)を再度クリック
                       /wait 500					'0.5秒後に監視再開
                   $case 1  'タイムアウト?
                       /msg "タイムアウト",,,,,,,48,"RGB(255,,)"      '赤文字
                   $default 'その他
                       /msg "その他のエラー",,,,,,,48
 
               $end-switch

            $loop

イメージ変化監視(変化率を求める)

指定時間監視し、変化した部分の面積比を表示
# イメージ変化監視(変化率を求める)
#
# 画像変化率を求める
#
#  0.5秒周期で枠内を監視
#  変化した部分の比率を表示
#
#   「開始」すると、0.00000 が表示されます。
#    監視枠内に別のフォーム(メモ帳)などを部分的に重ねると、
#    監視枠内の元のイメージから変化した部分の面積比が表示される。
#    0.5秒経過すると、表示値は 0.00000 に戻る。(変化後のイメージを初期画像とするため)

$do-while 1
	$set rc = GetImgChange(500,200,300,50,50)
	$set rc = format(%rc%,"0.00000")
	/message-show  %rc%,-1,,,,200,100
$loop
$call GetImgChange()  #監視枠消去

関数コール

ユーザー関数( SqrAvg() )を使って二乗平均を求める
さらに、関数内から、ユーザー関数( DspMsg() )を呼び出す。
# 関数コール  ///////////////////////////////////////////
#////////////////////////////////////////////////////////
        #=====================================================
        # プログラム本体
        #----------------------------------------------------

        $call DspMsg("二乗平均を求めます")
Retry1: $set p1 = InputBox("数値1を入力して下さい。1〜99 の数値","数値1入力",4)
        $if %p1%=="" $goto P_END                 'キャンセル → 終了
        $if CheckDt(%p1%,1,99)<>0 $goto Retry1        'チェックNG

Retry2: $set p2 = InputBox("数値2を入力して下さい。1〜99 の数値","数値2入力",5)
        $if %p2%=="" $goto P_END                 'キャンセル → 終了
        $if CheckDt(%p2%,1,99)<>0 $goto Retry2        'チェックNG

START:  $set rc=SqrAvg(%p1%,%p2%)                '二乗平均を求めて変数にセット
        $call DspMsg("%p1%と%p2%二乗平均 = Format(%rc%,'0.000')",72)  '小数点以下3桁に整形して表示
        $call DspMsg("プログラム終了",32,"rgb(255,,)")

P_END:  $end      '=============================== プログラム終了
 

        #=====================================================
        # 関数部
        #----------------------------------------------------

        #-----------------------------------------------------
        # 入力チェック
        #   パラメータ p:チェックする値 nMax:最大値 nMin:最小値
        #   戻り値   -1:非数値  -2:範囲外の値
        #-----------------------------------------------------
        $function CheckDt(p,nMin,nMax)

            $set rc =0

            $if IsNumeric(%p%)==0
                $Call DspMsg("非数値が入力されました!")
                $set rc=-1
            $elseif (%p%<%nMin%) || (%p%>%nMax%)
                $Call DspMsg("範囲外の数値が入力されました!")
                $set rc=-2
            $endif

            $return %rc%

        $end-function

        #-----------------------------------------------------
        # 二乗平均を求める関数
        #   パラメータ n1:数値1 n2:数値2
        #-----------------------------------------------------
        $function SqrAvg(n1,n2)                  '関数定義

                $call DspMsg("計算開始",32,"rgb(255,,)")  '関数内から関数をコール
                $set rc=Sqr((%n1%*%n1%+%n2%*%n2%)/2)      ' 二乗平均を求めて変数にセット

                $return %rc%                              '返却値

        #       $return Sqr((%n1%*%n1%+%n2%*%n2%)/2)      'まとめて書いても可
        $end-function

        #-----------------------------------------------------
        # メッセージ表示
        #   パラメータ
        # Msg:文言 FontSize:フォントサイズ FontColor:文字色
        #-----------------------------------------------------
        $function DspMsg(Msg,FontSize,FontColor)
                /message-show %Msg%,2,,,,,,%FontSize%,%FontColor%
                $return
        $end-function

関数コール インクルードファイル

関数部をインクルードとして別ファイルにする
# 関数コール インクルードファイル //////////////////////
#////////////////////////////////////////////////////////
        #=====================================================
        # プログラム本体
        #----------------------------------------------------

        $call DspMsg("二乗平均を求めます")
Retry1: $set p1 = InputBox("数値1を入力して下さい。1〜99 の数値","数値1入力",1)
        $if %p1%=="" $goto P_END                 'キャンセル → 終了
        $if CheckDt(%p1%,1,99)<>0 $goto Retry1        'チェックNG

Retry2: $set p2 = InputBox("数値2を入力して下さい。1〜99 の数値","数値2入力",2)
        $if %p2%=="" $goto P_END                 'キャンセル → 終了
        $if CheckDt(%p2%,1,99)<>0 $goto Retry2        'チェックNG

START:  $set rc=SqrAvg(%p1%,%p2%)                '二乗平均を求めて変数にセット
        $call DspMsg("%p1%と%p2%二乗平均 = Format(%rc%,'0.000')",72)  '小数点以下3桁に整形して表示
        $call DspMsg("プログラム終了",32,"rgb(255,,)")

P_END:  $end      '=============================== プログラム終了

        $include<Parts\func.dat>   'インクルードファイル

IEデータ取得

IEのウェブページからデータを取得(YAHOO)
# IEデータ取得  ///////////////////////////////////////
#////////////////////////////////////////////////////////
#
# ここでは、YAHOOのトップページの
#  「ニューストピックス」「クローズアップ」「株式ランキング」
# をそれぞれ5秒間表示する
#

        $set Url = "http://www.yahoo.co.jp/"    'YAHOO URL

# ニューストピックス
        $set Dt = GetIeData(%Url%,"topicsfb")
        /msg "ニューストピックス\n-----\n\n%Dt%",5,,,,,,11

# クローズアップ
        $set Dt = GetIeData(%Url%,"closeupindex")
        /msg "クローズアップ\n-----\n\n%Dt%",5,,,,,,11

# 株式ランキング
        $set Dt = GetIeData(%Url%,"stockranking")
        /msg "株式ランキング\n-----\n\n%Dt%",5,,,,,,11


IE詳細項目取得 チェックボックス

どの項目がチェックされているかを調べる
# IE詳細項目取得 チェックボックス  ///////////////////
#////////////////////////////////////////////////////////
#
# チェックボックスのそれぞれのチェック状態を調べる
#
#

$set url ="../../../../test/item_check.html"

$call SetIeNavigate(%url%,-1,2)


/message-show "%url% \n の「どのOSがチェックされているか」を調べます。",3


$set opt ="checked"

$if GetIeItemInfo(%url%,"OS1",%opt%) == 1
   $call msgbox("1 番目はチェックされています。")
$else
   $call msgbox("1 番目はチェックされていません。")
$endif


$if GetIeItemInfo(%url%,"OS2",%opt%) == 1
   $call msgbox("2 番目はチェックされています。")
$else
   $call msgbox("2 番目はチェックされていません。")
$endif

$if GetIeItemInfo(%url%,"OS3",%opt%) == 1
   $call msgbox("3 番目はチェックされています。")
$else
   $call msgbox("3 番目はチェックされていません。")
$endif

$if GetIeItemInfo(%url%,"OS4",%opt%) == 1
   $call msgbox("4 番目はチェックされています。")
$else
   $call msgbox("4 番目はチェックされていません。")
$endif

IE詳細項目取得&設定 ラジオボタン

ラジオボタンの全項目名と選択インデックスを取得してリストボックスに再現
# IE詳細項目取得&設定 ラジオボタン  /////////////////
#////////////////////////////////////////////////////////
#
# ラジオボタンの全項目テキストと選択インデックスを取得
# そのデータをリストボックスに反映する
#

     $set url ="../../../../test/item_check.html"
     $set Id  ="work"         'ID

     $call SetIeNavigate(%url%,-1,2)             'URLを開く(データ取得には必要無し)

     /message-show "%url% \n から全項目名と選択インデックスを取得",3

     $set dt  = GetIeItemInfo(%url%,%id%,"radio-text-all") '全項目テキスト

     $set idx  = GetIeItemInfo(%url%,%id%,"radio-index")   '選択インデックス


Retry:
$set rc=ListBox("職業",%dt%,%idx%,100,300,150,200,12)

     $switch %rc%

          $case ""
               $call msgbox("キャンセルされました。")

          $default

               $if msgbox("%rc% が選択されました。\n\n WEBページのラジオボタンの選択位置を変更してよろしいですか?",4,"リスト選択",100,300)==6

                    $set opt="radio-value"          '選択項目名で設定
                    $set rc = SetIeItemInfo(%url%,%id%,"radio-value",%rc%)
                    $set idx  = GetIeItemInfo(%url%,%id%,"radio-index") '選択インデックス
                    $goto Retry

               $endif

     $end-switch

IE詳細項目取得&設定 プルダウンメニュー

都道府県の全項目名と選択インデックスを取得してリストボックスに再現
# IE詳細項目取得&設定 プルダウンメニュー  ///////////
#////////////////////////////////////////////////////////
#
# コンボボックスから都道府県名のデータと
# 選択インデックスを取得して、リストボックスに反映
#
# リストボックスで選択した項目をWEBページの選択位置とする
#

    $set url ="../../../../test/item_check.html"
    $set Id  ="prefecture"         'ID

    /message-show "%url% \n から、都道府県データをパクってきます。",3

    $call SetIeNavigate(%url%,-1,2)    'URLを開く(特に必要無し)
 
    $set dt  = GetIeItemInfo(%url%,%id%,"select-text-all") '全項目取得

    $set idx  = GetIeItemInfo(%url%,%id%,"select-index")   '選択インデックス取得


Retry:
    $set rc=ListBox("都道府県",%dt%,%idx%,200,400,150,400,12)

    $switch %rc%
        $case ""
             $call msgbox("キャンセルされました。")
        $default

             $if msgbox("%rc% が選択されました。\n\n WEBページのリストボックスの選択位置を変更してよろしいですか?",4,"リスト選択",200,300)==6

                 $set rc = SetIeItemInfo(%url%,%id%,"select-value",%rc%)
                 $set idx= GetIeItemInfo(%url%,%id%,"select-index")  'インデックス再取得
                 $goto Retry

        $endif

    $end-switch

IE詳細項目取得&設定 リストボックス

東京23区の全項目名と選択インデックスを取得してリストボックスに再現
# IE詳細項目取得&設定 リストボックス  ///////////////
#////////////////////////////////////////////////////////
#
# リストボックスから東京23区名のデータと
# 選択インデックスを取得して、リストボックスに反映
#
# リストボックスで選択した区をWEBページの選択位置に変更する
#

     $set url ="../../../../test/item_check.html"
     $set Id  ="tokyo23ward"         'ID

     /message-show "%url% \n から、東京23区名データをパクってきます。",3

     $call SetIeNavigate(%url%,-1,2)    'URLを開く(特に必要無し)

     $set dt  = GetIeItemInfo(%url%,%id%,"select-text-all") '全項目取得

     $set idx  = GetIeItemInfo(%url%,%id%,"select-index")   '選択インデックス取得


Retry:
     $set rc=ListBox("東京23区",%dt%,%idx%,200,350,150,400,12)

     $switch %rc%
          $case ""
               $call msgbox("キャンセルされました。")
          $default

               $if msgbox("%rc% が選択されました。\n\n WEBページのリストボックスの選択位置を変更してよろしいですか?",4,"リスト選択",200,300)==6

                    $set rc = SetIeItemInfo(%url%,%id%,"select-value", %rc%) '選択項目名で設定
                    $set idx= GetIeItemInfo(%url%,%id%,"select-index" )      'インデックス再取得 
                    $goto Retry

               $endif

     $end-switch

IE指定タグの属性情報を取得

種別とキーワードでタグを探し出してポイントし、そのタグの詳細属性を取得する
# IE指定タグの属性情報を取得  /////////////////////////
#////////////////////////////////////////////////////////
#
# タグの種類とキーワードから目的のタグを探し出し−SetIePoint()
# そのポイント位置のタグ詳細情報を取り出す−GetIeItemInfoFromPoint()
#
# 一回目は「検索」ボタン、2回目は「オークション」ボタンを調べる
#

        $set url ="http://www.yahoo.co.jp"      'YAHOO
        $set rc = SetIeNavigate(%url%,-1,2)       'WEBページを開く


        $set opt = ListBox("調べる種別","id\nname\nvalue\ntext\nhref\n",3,400,400,150,200,16)
        $if %opt% == "" $goto End

        $set str = InputBox("調べる値","キーワード","検索",400,400)
        $if %str% == "" $goto End

        $call GetTagInfo(%opt%,%str%)


Retry:

        $set opt = ListBox("調べる種別","id\nname\nvalue\ntext\nhref\n",4,400,400,150,200,16)
        $if %opt% == "" $goto End

        $set str = InputBox("調べる値",,"オークション",400,400)
        $if %str% == "" $goto End

        $call GetTagInfo(%opt%,%str%)

        $goto Retry     '再試行

End:
        $end

#--------------------------------------
# 表示サブルーチン
#--------------------------------------

$function GetTagInfo(opt,str)

        $set rc = SetIePoint(%opt%,%str%)       '指定のキーワードで探してポイントする

        $if %rc% < 0
                $call MsgBox("見つかりませんでした")
                $return
        $endif

        # タグ詳細情報取得 ---------------------

        $set tagname = GetIeItemInfoFromPoint("tagname")
        $set id      = GetIeItemInfoFromPoint("id")
        $set name    = GetIeItemInfoFromPoint("name")
        $set type    = GetIeItemInfoFromPoint("type")
        $set onclick = GetIeItemInfoFromPoint("onclick")
        $set href    = GetIeItemInfoFromPoint("href")
        $set title   = GetIeItemInfoFromPoint("title")


        # 表示

        /msg "tagname = %tagname% \n id      = %id% \n name    = %name% \n type    = %type% \n onclick = %onclick% \n href    = %href% \n title   = %title% \n",999,,,,,,,,,"MS ゴシック"

        $return

IEデータ設定

IEのウェブページにさまざまなデータを設定して送信する(ダミーページ)
# IEデータ設定  ///////////////////////////////////////
#////////////////////////////////////////////////////////
#
# ダミー送信ページを使って、さまざまなデータを入力、送信する
#
        $set Url = "../../../../web_dl/petit_tool/mrecorder/dummy_page.html"

        $call SetIeData(%Url%,"email","xxxx@yyyy.co.jp")
        $call SetIeData(,"confirm_email","xxxx@yyyy.co.jp")
        $call SetIeData(,"lname","蜂須賀")
        $call SetIeData(,"lname_kana","ハチスカ")
        $call SetIeData(,"fname","小六")
        $call SetIeData(,"fname_kana","コロク")
        $call SetIeData(,"zip1","770")
        $call SetIeData(,"zip2","0001")
        $call SetIeData(,"prefecture","36")
        $call SetIeData(,"city","阿波市")
        $call SetIeData(,"street","夜盗通り")
        $call SetIeData(,"tel1","088")
        $call SetIeData(,"tel2","444")
        $call SetIeData(,"tel3","5555")
        $call SetIeData(,"birth_year","3")
        $call SetIeData(,"birth_month","12")
        $call SetIeData(,"birth_day","31")
        $call SetIeData(,"sex_male","1")
        $call SetIeData(,"magazin","1")
        $call SetIeData(,"dummy_button")

        $call iewait(20000)     'IE処理完了を最長20秒待つ

        /wait 2000                              '確認のため2秒間そのまま

        $call SetIeData(,"back","click")   '「back」ボタンをクリック

IE自動応答

IEの送信確認に対するダイアログボックスに自動応答する
# IE自動応答  /////////////////////////////////////////
#////////////////////////////////////////////////////////
#
# IEの確認メッセージに対して自動で応答する
# 自動応答はIEに限らず、他のアプリに対しても同じように応答可
#
        $set Url = "../../../../web_dl/petit_tool/mrecorder/dummy_page_confirm.html"

        $call SetIeData(%Url%,"email","xxxx@yyyy.co.jp")
        $call SetIeData(,"confirm_email","xxxx@yyyy.co.jp")
        $call SetIeData(,"lname","蜂須賀")
        $call SetIeData(,"lname_kana","ハチスカ")
        $call SetIeData(,"fname","小六")
        $call SetIeData(,"fname_kana","コロク")
        $call SetIeData(,"zip1","770")
        $call SetIeData(,"zip2","0001")
        $call SetIeData(,"prefecture","36")
        $call SetIeData(,"city","阿波市")
        $call SetIeData(,"street","夜盗通り")
        $call SetIeData(,"tel1","088")
        $call SetIeData(,"tel2","444")
        $call SetIeData(,"tel3","5555")
        $call SetIeData(,"birth_year","3")
        $call SetIeData(,"birth_month","12")
        $call SetIeData(,"birth_day","31")
        $call SetIeData(,"sex_male","1")
        $call SetIeData(,"magazin","1")
        $call SetIeData(,"dummy_button")

        $set rc=SetAutoRsp("送信してよろしいですか","{enter}",,2000)

        $if %rc% == 0           '正常応答

            /Wait 1000
            $call SetIeData(,"back","click")   '「back」ボタンをクリック

        $else

            $call MsgBox("エラー発生!")

        $endif

IEデータ設定(CSVファイルから)

CSVファイルを読み込んで、IEウェブページに設定して送信する
# IEデータ設定(CSVファイルから)  ////////////////////
#////////////////////////////////////////////////////////
#
# CSVファイルからデータを読み込んで、IEウェブページにデータ設定/送信
#  データのレコード番号はユーザーに入力要求、簡単な入力チェックも実施
#  再入力要求は、ラベル定義とジャンプ命令($goto)を使用して実現
#
        $set Url = "../../../../web_dl/petit_tool/mrecorder/dummy_page.html"
        $set FilePath ="Parts\mail_data.csv"    'CSVファイル名
        $set RecCnt = 0                         'レコード数
        $set FieldCnt = 0                       'フィールド数

        $set rc=GetCsvInfo(%FilePath%,RecCnt,FieldCnt)  'CSVファイルの情報を取得


Retry:  $set r=InputBox("レコード番号を入力 2〜%RecCnt% \n\n 1レコード目は見出し","レコード番号",2)
        $if %r% == "" $end                         'キャンセル → 終了
        $if IsNumeric(%r%) == false                '数値以外の入力
           $call MsgBox("数値を入力して下さい!")
           $goto Retry
        $elseif ( %r% > %RecCnt% ) || ( %r% <= 1 ) 'レコード数より大きい、または、負
           $call MsgBox( "2 以上、%RecCnt% 以下の数値を入力!")
           $goto Retry
        $endif


        $set c=1               'フィールド番号初期値

        $set FieldName = ""
        $set FieldData = ""
 
        $set rc = SetIeNavigate(%Url%)    'ページに移動

        $do-while ( %c% <= %FieldCnt% )   'フィールド数分継続

           $set rc = GetCsvData(%FilePath%,1,%c%,FieldName)    'フィールド名取得
           $set rc = GetCsvData(%FilePath%,%r%,%c%,FieldData)  'フィールドデータ取得
           $set rc = SetIeData(,%FieldName%,%FieldData%)  'IEにデータ設定

           $set c+=1           'フィールド番号アップ

        $loop


        $call iewait(20000)     'IE処理完了を最長20秒待つ

        /wait 2000                              '確認のため2秒間そのまま

        $set Url = "../../../../cgi-bin/dummy/rsp1.cgi"

        $call SetIeData(%Url%,"back","click")   '「back」ボタンをクリック


IEタブ操作の実演例

IEの起動、タブ追加、タブ切替、検索/リンク先への移動などの操作例
# IEタブ操作の実演例 /////////////////////////////////
#//////////////////////////////////////////////////////
#
# 実演項目:IEを新規ウィンドウの全画面で開く/タブ追加/指定タブでページを開く
#      タブ切替/項目入力/ボタンクリック/タブ切替
#      検索文言入力/検索/表示文字列でクリック/アドレスでクリック
#
# 注意項目:ここでは簡略化のためにエラー処理は一切行っていない
#      実際には 返却値 %rc% を判定してエラー処理を行う必要がある。
#

#−プログラム開始−

#ダミー入力ページを新規ウィンドウ/全画面で開く
 $set rc=SetIeNavigate("../../../../web_dl/petit_tool/mrecorder/dummy_page_confirm.html",-1,2)

#タブを追加
 $set rc=SetIeTabNew()

#さらにタブを追加&YAHOOページを開く
 $set rc=SetIeTabNew("http://yahoo.co.jp")

#1番目のタブ(ダミー入力ページ)をアクティブにする
 $set rc=SetIeTabActivate(1)

#データ入力−姓名、フリガナ姓名
 $set rc=SetIeData(,"lname","石川")
 $set rc=SetIeData(,"fname","五右衛門")
 $set rc=SetIeData(,"lname_kana","イシカワ")
 $set rc=SetIeData(,"fname_kana","ゴエモン")

#送信&確認ダイアログに自動応答
 $set rc=SetIeData(,"dummy_button","click")
 $set rc=SetAutoRsp("送信してよろしいですか?","{enter}")

#3番目のタブ(YAHOOページ)をアクティブ
 $set rc=SetIeTabActivate(3)

#検索ボックスに入力して「検索」ボタンをクリック
 $set rc=SetIeData(,"srchtxt","石川五右衛門")
 $set rc=SetIeData(,"srchbtn","click")

#検索結果一覧から 表示文字列指定でクリック
 $set rc=DoIeClick("text","石川五ェ門 (ルパン三世) - Wikipedia")

#リンクアドレス指定で 英語版Wikipedia をクリック
 $set rc=DoIeClick("url","http://en.wikipedia.org/wiki/Goemon_Ishikawa_XIII")

#全て終了
  $call MsgBox("Complete - Goemon Ishikawa XIII",,"石川五右衛門")

エクセルデータ設定

エクセルを起動し、データ設定、読み込みなどを行い、ブックを閉じる
# エクセルデータ設定  ///////////////////////////////////////
#////////////////////////////////////////////////////////
#
# エクセルを起動し
#  データを設定、読み込み、設定
#  閉じる
#
   /window-open excel,3                 'エクセルブックを最大化状態で開く
   /wait-window "book1",,10000          '"Book1"が現れるまで最長10秒待つ(既定5秒)

   $call SetXlData("book1",,"c5","坊主が屏風に")  'データ書き込み

   $set rc = GetXlData("book1",,"c5")             '取得

   $set rc += "上手に坊主の絵を描いた"            '文字連結

   $Call SetXlData("book1",,"c12",%rc%)           '書き込み

   /msg %rc%

   /window-quit "book1"                           'ブックを閉じる

# SMTP利用のメール送信 変数指定

$set from = "わたし<xxxx@yahoo.co.jp>"  // 送信者 メールアドレス
$set to   = "あなた<yyyy@gmail.com>"    // 宛先
$set smtp = "smtp.mail.yahoo.co.jp"     // SMTPサーバーアドレス

$set subj = "こんばんは"     // 件名
$set body = "夏だ!暑い!"   // 本文

$set user = "username"       // ログインユーザー名
$set pass = "password"       // パスワード

$set port = 465          // SMTPポート番号
$set ssl  = 1            // SSL認証 要

/mail-smtp-send %from%,%to%,%subj%,%body%,,%smtp%,%user%,%pass%,%port%,%ssl%
# SMTP利用のメール送信 即値指定

/mail-smtp-send xxxx@yahoo.co.jp,yyyy@gmail.com,"こんばんは","夏だ!暑い!",,smtp.mail.yahoo.co.jp,"username","password",465,1

メモ帳への文章入力

/key-sendによるメモ帳への連続文字列入力
# メモ帳への文章入力  ///////////////////////////////////
#////////////////////////////////////////////////////////
#
# /ke-sendによるメモ帳への連続文字列入力
#
# 以下のようにコマンドを連続して記述すると、
#  メモ帳を起動して所定位置に移動、文字列入力、メモ帳を閉じる
# の一連の動作が実行される。
# ここでは特殊キーの入力例として、文章は後ろから先に入力している。
#
# 注:「#」で始まる行はコメント行として無視される。
#
# 
/window-open notepad                                 'メモ帳を起動
/window-setposition "無題 - メモ帳",200,200,300,300  '移動・サイズ変更
/wait 500
/key-send "絵を描いた{enter}"                        '文字列入力、改行
/wait 500                                            '待機−特に意味なし(見かけの為)
/key-send "^{home}"                                  '文章の先頭に移動
/wait 500                                            '以降、繰り返し
/key-send "上手に坊主の{enter}"
/wait 500
/key-send "^{home}"
/wait 500
/key-send "坊主が屏風に{enter}"
/wait 3000
/window-quit "無題 - メモ帳"                         'メモ帳を閉じる
#
#--この上の行まで --

メモ帳入力&書式変更

フォントダイアログ操作により、書式(スタイルとフォントサイズ)を変更
# メモ帳入力&書式変更
#
# フォントダイアログ操作により、書式(スタイルとフォントサイズ)を変更
#
# 下記の例では、動きが判り易いように、/wait を入れて動作を一時停止している。
# また、メモ帳の構成がWindowsXPとWindows7 とで異なるので、共通の動作になるようにキー操作をしている。
#  (OSの種類が固定であればマウス操作のほうが簡単である。)
# PCによっては一回目の「フォント」ダイアログボックスが出るまでに時間が掛かる場合がある。
# その対処として、/mouse-point 10,10,"フォント",15000 にて最長15秒待つようにしている。
#
#
/window-open notepad
/window-setposition "無題 - メモ帳",300,300,400,300
/wait 500
#
# 文字入力
#
/key-send "イガイガ以外が意外"
/wait 1000
#
# 書式を「太字」にする
#
/key-send "%"                               '「ALT」キー
/wait 1000
/key-send "{right 2}"                       '右→2回
/wait 1000
/key-send "{down 2}"                        '下↓2回
/wait 1000
/key-send "{enter}"                         'ENTER(書式→フォント)
/mouse-point 10,10,"フォント",15000         '「フォント」ダイアログが出るまで最長15秒待つ
/wait 1000
/key-send "{tab}"                           'タブ1回 →スタイルへ
/wait 1000
/key-send "{up 5}{down 2}"                  '↑5回↓2回 → 太字(ボールド)  ※1
/wait 1000
/key-send "{tab}"                           'タブ1回 →サイズへ
/wait 1000
/key-send "{up 20}{down 10}"                '↑20回↓10回 →サイズ24ポイント ※2
/wait 1000
/key-send "+{tab 4}"                        'SHIFTを押しながらタブ4回 →「OK」ボタンへ移動 ※3
/wait 1000
/key-send "{enter}"                         'ENTER →「OK」を押下
/wait 1500
#
# 書式を「標準」に戻す
#
/key-send "%"                               '「ALT」キー
/wait 1000
/key-send "{right 2}"                       '右→2回
/wait 1000
/key-send "{down 2}"                        '下↓2回
/wait 1000
/key-send "{enter}"                         'ENTER(書式→フォント)
/mouse-point 10,10,"フォント",15000         '「フォント」ダイアログが出るまで最長15秒待つ  ※4
/wait 1000
/key-send "{tab}"                           'タブ1回 →スタイルへ
/wait 1000
/key-send "{up 5}"                          '↑5回 → 標準
/wait 1000
/key-send "{tab}"                           'タブ1回 →サイズへ
/wait 1000
/key-send "{up 20}{down 3}"                 '↑20回↓3回 →サイズ11ポイント
/wait 1000
/key-send "+{tab 4}"                        'SHIFTを押しながらタブ4回 →「OK」ボタンへ移動
/wait 1000
/key-send "{enter}"                         'ENTER →「OK」を押下
/wait 1500
#
# 閉じる
#
/window-close "無題 - メモ帳"
/wait 1000
/key-send "{tab}"                           '保存しますか? タブ→「いいえ」
/wait 1000
/key-send "{enter}"                         'ENTER
#
#
#
#  補足説明 ※1:{up 5}  − 書式:スタイルの選択位置を先頭にするための操作。
#       ※2:{up 20} − 同じく、書式:サイズの選択位置を先頭にするための操作。
#       ※3:+{tab 4}− 後方にタブ移動4回
#          WindowsXPは、前方へのタブ移動2回{tab 2}、Windows7は、タブ移動3回{tab 3}
#          にて「OK」ボタンに辿り着くが、両方を満たす為に後ろ向きに移動するという、少々苦肉の策。
#       ※4:PCによっては、一回目の「フォント」ダイアログ表示に時間が掛かる場合がある。
#          15秒でも足りない場合は値を大きくする。(ダイアログが表示されたら、即、次のステップに移行)
#          /mouse-point :指定タイトル文字を持つウィンドウが現れるまで、指定時間待つ。
#

メモ帳書式変更−短コマンド − 上記例3のキー押下をまとめたもの

/wait を省き、処理速度を上げる
# メモ帳書式変更−短コマンド − 上記例3のキー押下をまとめたもの
#
# /wait を省き、処理速度を上げる
#
# PCの性能や状態によっては、キー押下速度に画面処理が間に合わない場合があります。
# その場合には、画面転換前後に /wait 500 を追加して調整して下さい。 
#
#
/window-open notepad
/window-setposition "^無題 - メモ帳",300,300,400,300
/wait 500
#
# 文字入力
#
/key-send "回文{enter 2}留守に何する{enter}タイヤキ焼いた{enter}イガイガ以外が意外"
/wait 2000
#
# 書式を「太字」にする
#
/key-send "%"                               '「ALT」キー
/key-send "{right 2}{down 2}{enter}"        '右→2回、下↓2回ENTER(書式→フォント)
/mouse-point 10,10,"フォント",10000         '「フォント」ダイアログが出るまで最長10秒待つ
/key-send "{tab}{up 5}{down 2}{tab}{up 20}{down 10}"     'タブ1回、↑5回↓2回 →太字 タブ1回、↑20回↓10回 →サイズ24ポイント
/key-send "+{tab 4}{enter}"                 'SHIFTを押しながらタブ4回、ENTER →「OK」を押下
/wait 1500
#
# 書式を「標準」に戻す
#
/key-send "%"                               '「ALT」キー
/key-send "{right 2}{down 2}{enter}"        '右→2回、下↓2回ENTER(書式→フォント)
/mouse-point 10,10,"フォント",10000         '「フォント」ダイアログが出るまで最長10秒待つ
/key-send "{tab}{up 5}{tab}{up 20}{down 3}" 'タブ1回、↑5回 →太字 タブ1回、↑20回↓3回 →サイズ11ポイント
/key-send "+{tab 4}{enter}"                 'SHIFTを押しながらタブ4回、ENTER →「OK」を押下
/wait 1500
#
# 閉じる
#
/window-close "無題 - メモ帳"
/mouse-point 10,10,"^メモ帳$",5000
/key-send "{tab}{enter}"                    '保存しますか? タブ→「いいえ」 ENTER
#
#--この上の行まで --

メニュー項目チェックをオン/オフ − 「メモ帳」「折り返して」・・オン

トグル形式のメニューチェック状態を常にオン(またはオフ)の状態にする
# メニュー項目チェックをオン/オフ − 「メモ帳」「折り返して」・・オン
#
# トグル形式のメニューチェック状態を常にオン(またはオフ)の状態にする
#  (既にオンの場合は何もしない)
#  5行目 /mouse-checkoff とすると、常にオフの状態にする
#
/window-open notepad
/window-setposition "無題 - メモ帳",100,100
/mouse-leftclick 135,35,"無題 - メモ帳"  '書式
/wait 1500
/mouse-checkon 135,57,"無題 - メモ帳"    '折り返して
/wait 2000
/window-close "無題 - メモ帳"

電卓操作

起動→関数電卓→桁区切りオン→  99 x^y 9 = を計算、 ×で閉じる
# 電卓操作 //////////////////////////////////////////////
#////////////////////////////////////////////////////////
#  起動→関数電卓→桁区切りオン→
#  99 x^y 9 =  →  結果をコピー
#  ×で閉じる  → 結果をメッセージボックスに表示
#
/window-open calc
/window-setposition "電卓",100,100
/mouse-leftclick 66,34,"電卓"      '表示
/wait 500

$if GetOsVersion()>=6.1 'Windows7以上?
        /mouse-leftclick 20,90,"電卓"      '関数電卓
        /wait 500
        /mouse-leftclick 20,40,"電卓"      '表示
        /wait 500
        /mouse-checkOn 20,180,"電卓"       '桁区切りを常にオン
        /wait 1000
        /mouse-leftclick 310,210,"電卓"    '9
        /wait 500
        /mouse-leftclick 310,210,"電卓"    '9
        /wait 500
        /mouse-leftclick 150,240,"電卓"    'x^y
        /wait 500
        /mouse-leftclick 310,210,"電卓"    '9
        /wait 500
        /mouse-leftclick 380,280,"電卓"    '=
        /wait 2000
        /mouse-leftclick 90,40,"電卓"      '編集
        /wait 2000
        /mouse-leftclick 90,65,"電卓"      'コピー
        /wait 2000
        /mouse-leftclick 400,15,"電卓"     '× 閉じる
$else
        /mouse-leftclick 66,74,"電卓"      '関数電卓
        /wait 500
        /mouse-leftclick 66,34,"電卓"      '表示
        /wait 500
        /mouse-checkOn 66,225,"電卓"       '桁区切りを常にオン
        /wait 1000
        /mouse-leftclick 386,154,"電卓"    '9
        /wait 500
        /mouse-leftclick 386,154,"電卓"    '9
        /wait 500
        /mouse-leftclick 134,207,"電卓"    'x^y
        /wait 500
        /mouse-leftclick 386,154,"電卓"    '9
        /wait 500
        /mouse-leftclick 479,238,"電卓"    '=
        /wait 2000
        /mouse-leftclick 16,34,"電卓"      '編集
        /wait 2000
        /mouse-leftclick 16,57,"電卓"      'コピー
        /wait 2000
        /mouse-leftclick 544,14,"電卓"     '× 閉じる
$endif

/wait 2000

$set result = GetClipboardText()

$call MsgBox("計算結果 = %result%")


ワードパッド操作

ワードパッド起動→書式設定ボタン→入力→閉じる
# ワードパッド操作 /////////////////////////////////////
#////////////////////////////////////////////////////////


#■ワードパッド操作
#
# ワードパッド起動→書式設定ボタン→入力→閉じる
#

/window-open write
/window-setposition "ドキュメント - ワードパッド",100,100,600,400
/wait 500

$if GetOsVersion()>=6.1 'Windows7以上?
        /mouse-checkOn 105,105,"ドキュメント - ワードパッド"     '太字オン
        /wait 500
        /mouse-checkOff 135,105,"ドキュメント - ワードパッド"    '斜体オフ
        /wait 500
        /mouse-checkOn 155,105,"ドキュメント - ワードパッド"     '下線オン
$else
        /mouse-checkOn 375,95,"ドキュメント - ワードパッド"      '太字オン
        /wait 500
        /mouse-checkOff 400,95,"ドキュメント - ワードパッド"     '斜体オフ
        /wait 500
        /mouse-checkOn 425,95,"ドキュメント - ワードパッド"      '下線オン
$endif


#
/key-send "太字オン、イタリックオフ、下線オン{enter}"
/key-send "ワードパッド入力{enter}"
/key-send "5秒待ち{enter}"
/wait 5000
/key-send "5秒後にワードパッドを閉じる{enter}"
/wait 5000
/window-close "ドキュメント - ワードパッド"
/mouse-point 10,10,"^ワードパッド$"
/key-send "{right}{enter}"

本体監視機能とコマンドの組み合わせ

監視対象として「画像変化」を指定し、検知時のアクションを「コマンド/アプリ実行」とする。

キャプチャー&メール送信

画像監視とメール送信を組み合わせて、変化画像をメール添付で送信
# キャプチャー&メール送信  /////////////////////////////
#////////////////////////////////////////////////////////


#■キャプチャー&メール送信
#
# 画像監視とメール送信を組み合わせて、変化画像をメール添付で送信
#
# アクション−コマンド/アプリ実行(下記コマンド)
#
#
/capture jpg file:検知画像 timestamp                       'デスクトップを"検知画像.jpg"(作成日時入)で保存
/mail-send "見張り番<xx@xxx.jp>",,"検知",,"検知画像.jpg"   'メール送信。宛先、本文、省略

デスクトップ定期観測&メール送信

定期的にデスクトップ画像をメール送信可能。
# デスクトップ定期観測&メール送信
#
# 変化しない位置で観測することにより、定期的にデスクトップ画像をメール送信可能。
#
# 監視:画像変化、無変化監視(0.5=30秒)、継続監視オン
#    監視場所−最小の監視枠で、通常変化しない場所(右下隅)に配置
#
# アクション−コマンド/アプリ実行(下記コマンド)
#
#
/capture jpg file:定期画像 timestamp                       'デスクトップを"検知画像.jpg"(作成日時入)で保存
/mail-send "見張り番<xx@xxx.jp>",,"検知",,"定期画像.jpg"   'メール送信。宛先、本文、省略

×
PageTop