<   2012年 05月 ( 9 )   > この月の画像一覧
[VBScript] 指定プロセスのCPU使用率を監視し、アイドル状態になるまで待つ
こんばんワイン。どーもボキです。

Craving Explorerは、かなり使える動画ダウンロード&変換ツールなんだけど、
時間の掛かる変換機能は、変換完了時のイベントを指定できない。

たとえば、変換に数時間かかる動画が終わったら、電源OFFるってのが出来ない。
なので、指定プロセスがアイドル状態(=CravingExplorer変換完了)かを判定するスクリプトを考えた。

以下は、指定したプロセスのCPU利用率を監視するサンプル。
サンプルではFirefoxがアイドル状態になるのをひたすら待ち受ける。
If WaitForProcessIdle("firefox.exe") Then MsgBox "アイドル状態" Else MsgBox "ない"

' -------------------------------------------------------------------------------
' True : 指定プロセスがアイドル状態になった(or 終了した)
' False : 指定プロセスが存在しない
Function WaitForProcessIdle(ProcessName)
'http://www.tek-tips.com/viewthread.cfm?qid=395765

WaitForProcessIdle = False
' プロセスIDを取得する
For Each Process in GetObject("winmgmts:").ExecQuery("Select * from Win32_Process where Name = '" & ProcessName & "'")
pID = Process.Handle
Exit For
Next
If pID = 0 Then Exit Function ' プロセスが見つからない
On Error Resume Next

WScript.StdOut.Write ProcessName &"(" & pID &")"

cmd = "Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = '" & pID & "'"
Set objService = GetObject("Winmgmts:{impersonationlevel=impersonate}!\Root\Cimv2")
For Each objInstance in objService.ExecQuery(cmd)
n1 = objInstance.PercentProcessorTime
d1 = objInstance.TimeStamp_Sys100NS
Exit For
Next
Do
If objInstance.Name = "" Then Exit Do ' プロセスが終了
n0 = n1
d0 = d1
WScript.Sleep(1000)
WScript.StdOut.Write "."
For Each objInstance in objService.ExecQuery(cmd)
n1 = objInstance.PercentProcessorTime
d1 = objInstance.TimeStamp_Sys100NS
Exit For
Next
cpuusage = Round((n1 - n0)/(d1 - d0)*100, 0)
Loop Until cpuusage = 0 ' CPU使用率が0になるまでループ
WScript.StdOut.Write vbCRLF

On Error GoTo 0
WaitForProcessIdle = True
End Function
けど今回やりたかったことに対しては、このスクリプトは使えない。(このままでは)

それは、変換処理はCraving Explorerでなく、「ffmpeg.exe」が行っているからだ。
また、動画ごとにffmpeg.exeプロセスを立ち上げているようだ。(=動画ごとにffmpeg.exeのプロセスIDが変わる)

なので、スクリプトを作るとしたらこんな感じかな。
 1.一定時間ごとにffmpeg.exeプロセスが起動しているか確認する
 2.ffmpeg.exeプロセスが存在しない状態が10sec続くようなら、変換完了 → 電源OFF
このほうがずっとシンプルで確実。


[PR]
by yozda | 2012-05-30 00:23 | プログラミング | Trackback(2) | Comments(0)
[VBScript] 指定した名前のプロセスを強制終了する
こんにチワワ。どーもボキです。

うちの環境(XP home SP3 + IE7)だけかもしれんが、IEが正常に終了しないことが多い。(プロセスが残る)
Youtubeのような動画サイトを閲覧中に終了させるとこの現象が起きるっぽい。

タスクマネージャーで一つ一つ終了させるのは面倒なので、スクリプトを作った。
ここでいうプロセス名とは、タスクマネージャーのプロセス一覧で表示される名前のこと。
' IEを強制終了する
TerminateProcess("iexplore.exe")

'-------------------------------------------------------------------------------
' 指定した名前のプロセスを強制終了
Sub TerminateProcess(ProcessName)
Dim objProcList,objProcess

Set objProcList = GetObject("winmgmts:").InstancesOf("win32_process")
For Each objProcess In objProcList
If LCase(objProcess.Name) = LCase(ProcessName) Then objProcess.Terminate
Next
End Sub



[PR]
by yozda | 2012-05-27 12:29 | プログラミング | Trackback(3) | Comments(0)
RGガンダムつくった
こんばんワイン。どーもボキです。

だーいぶ前に買っといたリアルグレードのガンダムを作った。
まぁ作ったのも一ヶ月以上前だが。

このシリーズは、素組み(組み立てるだけ)でも難しい。
パーツ細かすぎ。シールもちっちゃすぎるので、目・肘・膝以外は貼ってない。

このシリーズは膝関節を動かすと、
腿のプレートがスライドする仕組みになっているのだが、これ、要るか?

これのお陰(かは知らん)で、膝を曲げてたら、折れたわ。右足ね。
あと胴体と腕の隙が気になる。肩を押し込んでたら、これも折れた。右手ね。

ボキってば、実は不器用なんだなぁと実感したプラモだね。これは。
ちなみに、瞬間接着剤でくっつけてあるので、立ちポーズだけは取れる。
a0021757_21245850.jpg



[PR]
by yozda | 2012-05-26 21:40 | 物・モノ・もの | Trackback | Comments(0)
天然のドジョウ
こんばんワイン。どーもボキです。

田んぼのあぜ道を歩いてると、溝にドジョウを見つけた。
田舎育ちなのだか、天然のドジョウを見たのは初めて。

ちょっと感動。
a0021757_19142493.jpg


[PR]
by yozda | 2012-05-20 19:10 | 暮らし | Trackback | Comments(4)
手作り絶縁フィルタ
こんにチワワ。どーもボキです。

朝一のテストに間に合わせるために、残業して作った絶縁フィルタがうまく動いてくれた。

基準信号に乗るノイズでどうしても計測に失敗することが多かったのだが、
絶縁フィルタのおかけで、失敗ゼロ。計測信号自体もすっごいキレイになった。

基準信号のグラウンドラインからノイズが回り込んでたんだろうね。


これまで20万弱かけてフィルタを買ってたのが、これなら千円弱。(< 作成にかかる人件費)
昨日は気分がよかった。


[PR]
by yozda | 2012-05-19 12:45 | SE♂日誌 | Trackback | Comments(0)
[苦言] データ変換ツール作ったったら…
こんばんワイン。どーもボキです。

市販計測器のデータを変換するツールを作ったった。

付属ソフトでもCSV変換できるが、
メニュー操作が必要で一度に変換できるのは1ファイルのみ。
しかも、付属ソフトのクセに、変換ファイルには単位が残らないショッボイ仕様。


ボキはツール屋ではない。


けど、このムダな工数を発生させるツールを見て見ぬ振りはできない。

だから、変換するツールを作ったろと思った。
ボキの手に掛かりゃ、バイナリファイル構造なんてすぐにわかるのよ。隠してもムダ。


んで、CSV変換するツールを作った。

計測データを入れたフォルダをドロップするだけよ。そんだけ。
もうメニューをたどることもないわ。CSV変換しても単位もちゃんと分かるわ。


そしたらね。

データを利用する人から、
 「チャンネル名に単位が併記されるとマクロで処理できん、設定でOFFれるようにしてくれ」
ってさ。


ショボかったのは、データ使う側もだったわ。

標準ツールで落ちてた単位を『 チャンネル名[単位] 』って併記したらクレーム来たわ。
s = チャンネル名
i = InStr(s,"[")
If i <> 0 Then s = Left(s,i-1)
ってやるだけなのにね。ホント、しょっぺぇなぁ。


[PR]
by yozda | 2012-05-18 00:15 | SE♂日誌 | Trackback | Comments(0)
星野監督 就任後1000勝達成!!らしいね
こんばんワイン。どーもボキです。

今日、職場のメンバは野球を見に行った。
ボキも誘ってもらったけど、返信するのすら忘れてた。てへ

広島 対 中日戦、
ここんところ広島に連敗中らしい。


さっきニュースで「星野監督が1000戦勝を達成!」って。

それを見て、
 「あぁ…、今日は負けちゃったんだぁ…」
と思ったけど、どうやら今は楽天の監督らしい。

嫁に星野監督ってどこの球団か知ってるか?ってきくと、
 「フクちゃんのおとうさんかね?」って。
それは落合。

Wikipedia情報によると、去年まで中日の監督だったらしい。
その程度よ。野球の知識。

これでも小学校では3年間野球してたんだけよね。
優勝するともらえる金メダルは、ホンモノの金だと思ってたからね。


[PR]
by yozda | 2012-05-12 00:41 | くっだらないコト | Trackback | Comments(0)
ツールを作る前につまづいた
こんばんワイン。どーもボキです。

今日はさっむいねー。
昼は天気もよかったけど、それでも寒かった。

前回書いたコレ↓

> ほとんど扱い方を知らないLаbViewを習得して、データベースにアクセス、データ抽出&保存。
> これらの一連を、ボタン押すだけ になるまで設計する。気が重い。

最初っからつまづいた。メーカが用意してるプラグインを実行するとエラーが出る。
英語のドキュメントが添付されていたから、辞書片手にそれを読み解いても原因わからん。

今メーカに問い合わせ中。先は長い。

安心のワカチコ品質!だからオマエがツール屋になれ!

[PR]
by yozda | 2012-05-11 19:38 | SE♂日誌 | Trackback(1) | Comments(0)
連休前半
おはヨーグルト。どーもボキです。

a0021757_8374943.jpg
ナナミちゃんの発言にバカウケするコウタロウ。
a0021757_8375021.jpg
小学校にてタイヤ飛びを披露してくれるコウタロウ。
a0021757_8375198.jpg
近所の犬を見に行くユウカ。
a0021757_8375244.jpg
公園にて一人で滑り台にチャレンジするユウカ。
a0021757_8375611.jpg
一人で出来て嬉しそう。


[PR]
by yozda | 2012-05-01 08:36 | 暮らし | Trackback | Comments(0)