◆ [VBScript] Craving Explorerの動画変換の終了後、PCをスタンバイにする
おはヨーグルト。ドーモボキです。

[VBScript] 指定プロセスのCPU使用率を監視し、アイドル状態になるまで待つ
 ↑
このときに考えてた、Craving Explorerの動画変換完了時にPCをスタンバイにするスクリプトを考えた。

指定した名前のプロセスが存在するか調べる
PCをスタンバイにする
引数を引き継いだ上で、指定したホストで実行する (処理メッセージを表示させるため)
 の組み合わせ。超、カンタン&シンプル。
SetScriptHost("CScript")    ' CScriptホストで実行 (変換メッセージを出すため)

Set objWS = CreateObject("WScript.Shell")

Count = 1
While 1
' 1sec間スリープ
WScript.Sleep 1000

' ffmpeg.exeの有無を調べる
If ProcessExists("ffmpeg.exe") Then
If Count <> 0 Then WSCript.StdOut.Write vbCRLF & "Wait" Else WScript.StdOut.Write "."
Count = 0
Else
If Count = 0 Then WSCript.StdOut.Write vbCRLF & "Check" Else WScript.StdOut.Write "."
Count = Count +1
End If

' 30sec間 ffmpes.exeが実行されていないなら変換終了 → スタンバイ
If Count = 30 Then
If objWS.PopUp("スタンバイにします",3,"変換終了",1+32) <> vbCancel Then
objWS.Run "rundll32 powrprof.dll,SetSuspendState"
End If
WScript.Quit
End If
WEnd

'-------------------------------------------------------------------------------
' プロセスが起動しているか調べる
Function ProcessExists(ProcessName)
Dim Service,QfeSet,Qfe,r

Set Service = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer
Set QfeSet = Service.ExecQuery("Select * From Win32_Process Where Caption='" & ProcessName & "'")

r = 0
For Each Qfe In QfeSet
r = Qfe.ProcessId
Exit For
Next

ProcessExists = r <> 0
End Function

' -------------------------------------------------------------------------------
' 実行ホストを切り替える
Sub SetScriptHost(HostName)
If InStr(LCase(WSCript.FullName),LCase(HostName)) <> 0 Then Exit Sub

s = HostName & " """ & WScript.ScriptFullName & """"
If WScript.Arguments.Count > 0 Then
For i = 0 To WScript.Arguments.Count -1
s = s &" """ & WScript.Arguments.Item(i) & """"
Next
End If
CreateObject("WScript.Shell").Run s
WScript.Quit
End Sub


[PR]
by yozda | 2012-06-16 11:51 | プログラミング | Trackback(1) | Comments(0)
トラックバックURL : http://yozda.exblog.jp/tb/15574427
トラックバックする(会員専用) [ヘルプ]
Tracked from ( … > Z_ ̄∂ at 2014-11-22 23:47
タイトル : [VBScript] 指定時間経過後にPCをシャットダウ..
こんばんワイン。どーもボキです。 たとえば、  ○○な動画をダウンロードするときや  ○○な動画を変換するとき に使えそう。だね。 s = InputBox(&quot;hh:mm形式&quot;,&quot;指定時間後にスタンバイ&quot;,&quot;00:10&quot;) If s = &quot;&quot; Then WScript.Quit t = CDate(s) + Time While CDate(t) &gt; Time WScript.Sle...... more
<< メモはテキストファイルに取る。ヨシ! [VBScript] 引数を引... >>