今まで撮り溜めたビデオ カメラの録画を動画変換するために、とりあえず今回きりのつもりで、フリーの変換ツールである MediaCoder をインストールしました。PC が非力なので変換に長時間を要するのですが、変換処理中、ダイアログが定期的にポップアップして、その間、変換処理が中断してしまいます。また、このダイアログがポップアップしてから 2 時間以内に、簡単な足し算/引き算をしなければならず、マクロ ツールで単純に OK ボタンを連打するなどの方法が使えません。
そこで、フリーの自動化ツール UWSC を利用して、このダイアログを自動回避してみました。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
寄せられたコメント (全 8 件中、最新 5 件まで表示しています)
どのタイミングで判定されるか切り分けするのが面倒でしたので,適当にマージンを挟むようにすると解決しました.
// 解答入力エリアへ送信
SLEEP( 5 )
SENDSTR( ダイアログID, 答え, 2 )
// Continueボタン クリック
SLEEP( 3 )
CLKITEM( ダイアログID, "Continue" )
BREAK
今のUWSC(昔もあったのかどうかは分かりませんが)には、
スケジューラーという便利な機能があるようです。
しかも、起動トリガーとして、「指定ウィンドウが現れた時」という設定ができるようですので、
Title:CONTINUE IN
でうまくいかないかと模索中です。
あー…なるほど。
Google検索やYahoo!検索からお越し頂くと、文中の検索キーワードに合致した部分がハイライトされるようになっていて、それが原因で、プログラムコード内のキーワードにも関わらずハイライトのための余計なコードが挿入されてしまうのですね。
ハイライトされたコードをコピペすると確かに動きません。はい。
著者の見落としだと思いますが、これはcssで使われるものなので<>のやつは削除すればいいと思います。
プログラム初心者の方のようですので、オンラインで解決を求められるよりも、身近なパソコンに詳しいお友達に直接相談されるのが一番手っ取り早いと思います。