するようにしているのですが、chromeでダウンロードをしていても、
問答無用でサスペンドされてしまい、途中までダウンロードしていたファイルを
また最初からダウンロードしなくてはならない事象が過去何度も起きています。
これを解決する方法を教えていただきたく。
何かフリーソフトでネットワークの帯域を見れるようなものはあるのでしょうか?
あれば、それをバッチファイルから呼び出して、戻り値次第で、サスペンドは
行わない。という風にできます。
もしないようならば、C言語またはC#で自作しようと思います。
関連しそうなAPIはどのようなものがありますでしょうか?
環境:windows xp home edition
WHSでどうでしょう?
strComputer = "." strInterface = "Broadcom NetLink [TM] Gigabit Ethernet - パケット スケジューラ ミニポート" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set PerfInterface = objWMIService.Get(_ "Win32_PerfFormattedData_Tcpip_NetworkInterface.Name='" & strInterface & "'") PerfInterface.Refresh_ result = MsgBox("平均通信速度(Byte/Sec) 表示", vbOKCancel + vbQuestion, "BytesTotalPersec") While (result = vbRetry or result = vbOK) PerfInterface.Refresh_ result = MsgBox(PerfInterface.BytesTotalPersec & " Byte/Sec", vbRetryCancel + vbQuestion, "BytesTotalPersec") Wend
ミソはPerfInterface.Refresh_とPerfInterface.BytesTotalPersecで、BytesTotalPersecは、Refresh_とRefresh_の間の平均通信速度を示します。
strInterfaceの値は以下で。
Set wbemServices = GetObject("winmgmts:\\.") Set wbemObjectSet = wbemServices.InstancesOf(_ "Win32_PerfFormattedData_Tcpip_NetworkInterface") For Each wbemObject In wbemObjectSet WScript.Echo wbemObject.Name Next
コメント(1件)
// 俺用サスペンドスクリプト
var JUDGE_LINE = 5000; //判定ライン(1秒間に受信したバイト数)
main();
function main(){
var diff = get_diff();
if(diff >= JUDGE_LINE){
WScript.Echo("ダウンロード中?サスペンド移行停止");
return;
}
var wsh_shell = WScript.CreateObject("WScript.Shell");
wsh_shell.Run("rundll32.exe PowrProf.dll,SetSuspendState");
}
function get_diff(){
var first = get_packet(); //1回目のパケット数取得
WScript.Sleep(1000); //1秒待機
var second = get_packet(); //2回目のパケット数取得
var diff = Number(second) - Number(first);
return diff;
}
function get_packet(){
var wsh_shell = WScript.CreateObject("WScript.Shell");
var exec = wsh_shell.Exec("netstat -e");
exec.StdOut.ReadLine();
exec.StdOut.ReadLine();
exec.StdOut.ReadLine();
exec.StdOut.ReadLine();
var ret = exec.StdOut.ReadLine(); //5行目を取得
var tmp = ret.replace(/ +/g,' '); //複数空白→1つの空白置換
var tmp1 = tmp.split(" "); //空白で切り分け
return tmp1[1];
}