MediaCoder で定期ポップアップするダイアログを自動で回避する

Posted by
ぴろり
Posted at
2014/12/18 10:08
Trackbacks
関連記事 (0)
Comments
コメント (8)
Post Comment
コメントできます
Category
ソフトウェア カテゴリ
カバーイメージ

 今まで撮り溜めたビデオ カメラの録画を動画変換するために、とりあえず今回きりのつもりで、フリーの変換ツールである MediaCoder をインストールしました。PC が非力なので変換に長時間を要するのですが、変換処理中、ダイアログが定期的にポップアップして、その間、変換処理が中断してしまいます。また、このダイアログがポップアップしてから 2 時間以内に、簡単な足し算/引き算をしなければならず、マクロ ツールで単純に OK ボタンを連打するなどの方法が使えません。
 そこで、フリーの自動化ツール UWSC を利用して、このダイアログを自動回避してみました。UWSC には簡単なスクリプト言語が備えられており、ダイアログ内の文字列を取得して、足し算/引き算の結果を求め、その答えをテキスト フィールドに埋めるといった処理を自動化できます。素直に毎回入力すればいいんですが、こういう無駄なところに燃えてしまう、嗚呼、ダメ人間catface.gif

このエントリーをはてなブックマークに追加  

UWSC スクリプト

 オリジナルは、MediaCoderの足し算自動入力|たろーさんのブログで公開されているスクリプトです。最新バージョンの MediaCoder では引き算が出現することがあり、そのままでは対応できませんでしたので、少し弄ってあります。

// MediaCoder 足し算/引き算自動入力
// $Id$
// @see http://ameblo.jp/tomop-2012/entry-11565904937.html
Exec( "X:\\Program Files (x64)\\MediaCoder\\MediaCoder.exe" )
WHILE TRUE
    SLEEP( 60 )

    // 足し算ダイアログ検出
    ダイアログID = GETID( "Continue in" )
    IF ダイアログID < 0 THEN CONTINUE

    // ダイアログ内文字列取得
    アイテム数 = GETITEM( ダイアログID, ITM_STATIC )
    IF アイテム数 <= 0 THEN CONTINUE

    FOR ii = 0 to アイテム数 - 1
        IF POS( "math:", ALL_ITEM_LIST[ii] ) = 0 THEN CONTINUE
        文字列 = SPLIT( ALL_ITEM_LIST[ii] )
            IF 文字列[6] = "+" THEN
                解答 = VAL( 文字列[5] ) + VAL( 文字列[7] )
        ELSEIF 文字列[6] = "-" THEN
                解答 = VAL( 文字列[5] ) - VAL( 文字列[7] )
//      ELSEIF 文字列[6] = "*" THEN
//              解答 = VAL( 文字列[5] ) * VAL( 文字列[7] )
        ELSE
                PRINT "Unknown operator" + 文字列[6]
                EXIT
        ENDIF
        // 解答入力エリアへ送信
        SENDSTR( ダイアログID, 解答, 2 )
        // Continueボタン クリック
        CLKITEM( ダイアログID, "Continue" )
        BREAK
    NEXT
WEND

解説

4 行目
MediaCoder と UWSC を別々に起動しなくても良いように、スクリプトを実行した際に、自動的に MediaCoder を起動するようにしています。ここに書かれたパスは、私の環境での設定値ですので、そのままではエラーになるかもしれません→参考
23 行目
将来のバージョンで、足し算/掛け算以外の演算が増えた場合などにも簡単に対応できます。
このエントリーをはてなブックマークに追加  


この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:ぬるぬるローションの製作

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

寄せられたコメント (全 8 件中、最新 5 件まで表示しています)

Posted by
通りすがり通りすがり
at
2018/08/14 16:21
ID
W9boju.6
最新のMediaCoderに対して使ったところ,回答が早すぎると再度問題が出題されるようです.
どのタイミングで判定されるか切り分けするのが面倒でしたので,適当にマージンを挟むようにすると解決しました.
// 解答入力エリアへ送信
SLEEP( 5 )
SENDSTR( ダイアログID, 答え, 2 )
// Continueボタン クリック
SLEEP( 3 )
CLKITEM( ダイアログID, "Continue" )
BREAK
Posted by
通りすがりその2通りすがりその2
at
2017/03/26 02:37
ID
XfvOBZPo
スクリプトを流用させていただきました。率直な感想をば。
今のUWSC(昔もあったのかどうかは分かりませんが)には、
スケジューラーという便利な機能があるようです。
しかも、起動トリガーとして、「指定ウィンドウが現れた時」という設定ができるようですので、
Title:CONTINUE IN
でうまくいかないかと模索中です。
Posted by
ぴろり ◆OLEEi.VOX.ぴろり ◆OLEEi.VOX.
at
2015/11/03 11:14
ID
9N0rE14w
>エラーを吐くのは<span class="hilite1"></span>があるからです。
あー…なるほど。
Google検索やYahoo!検索からお越し頂くと、文中の検索キーワードに合致した部分がハイライトされるようになっていて、それが原因で、プログラムコード内のキーワードにも関わらずハイライトのための余計なコードが挿入されてしまうのですね。
ハイライトされたコードをコピペすると確かに動きません。はい。
Posted by
通りすがり通りすがり
at
2015/10/31 22:18
ID
iLWLNf/Q
9行目(ほかにもありますが)にエラーを吐くのは<span class="hilite1"></span>があるからです。
著者の見落としだと思いますが、これはcssで使われるものなので<>のやつは削除すればいいと思います。
Posted by
ぴろり ◆OLEEi.VOX.ぴろり ◆OLEEi.VOX.
at
2015/04/12 20:35
ID
elmNU8aw
どんなエラーが出ているのか、メモ帳でどのようにスクリプトを生成されたのか判らないので、的確なお答えはできませんが、こちらの環境ではメモ帳にコピー&ペーストしたスクリプトで正しく動作しています。
プログラム初心者の方のようですので、オンラインで解決を求められるよりも、身近なパソコンに詳しいお友達に直接相談されるのが一番手っ取り早いと思います。

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。