愛をください。
ソースコードはこんな感じです。
JScript
HTML
愛をください。
このブログは主に C C++ PHP WSH XCODE オブジェクト指向 に関する記事が多いはず!
// IEオブジェクト生成&IE機動
var objIE = WScript.CreateObject("InternetExplorer.Application", "IE_");
// 可視状態にする
objIE.Visible = true;
// 検索ページの表示
objIE.GoSearch();
// シェルオブジェクト生成
var objShell = WScript.CreateObject("WScript.Shell");
// ページが表示されるまで待つ
WScript.Sleep(5000);
// キー送信
objShell.Sendkeys("Google");
// Enterキー送信
objShell.Sendkeys("{ENTER}");
//function IE_DownloadComplete() {
// objShell.Sendkeys("Google");
// objShell.Sendkeys("{ENTER}");
//}
検索ページが読み込まれたことをイベントで受け取ろうとしたのですがうまくできませんでした、JScriptだとつかえないイベントが結構あるようです。WScript.echo(this.getScriptFolder());
// スクリプトフォルダの取得
function getScriptFolder() {
return WScript.ScriptFullName.replace("\\" + WScript.ScriptName, "");
}
try {
var main = new main(WScript.Arguments);
main.exec();
}
catch(e) {
WScript.echo(e);
WScript.Quit();
}
function main (_args) {
// Windows Media Playerコントロールオブジェクト生成
this.objWMP = WScript.createObject("WMPlayer.OCX");
// FileSystemObject生成
this.objFileSys = WScript.CreateObject("Scripting.FileSystemObject");
// ShellObject生成
this.objShell = WScript.createObject("WScript.Shell");
// 引数の取得
this.objArgs = _args;
if (this.objArgs.UnNamed.count <= 0) {
throw "ファイル叉はフォルダをドラッグ&ドロップするか\nコマンドラインから引数としてファイル又はフォルダパスを指定してください。";
}
//---------------------------------
// exec()
//---------------------------------
this.exec = function() {
// logファイルの生成(上書きモード)
var logFileName = "PlayTimeLog.txt";
var objLogFile = this.objFileSys.OpenTextFile(logFileName, 2, true);
var fileCnt = 0;
// 全ての名前なし引数について処理する
var unNamedArgs = this.objArgs.UnNamed;
var enu = new Enumerator(unNamedArgs);
for (; enu.atEnd() == false; enu.moveNext()) {
try {
var arg = enu.item();
fileCnt = this.logPlayTime(objLogFile, arg);
}
catch(e) {
objLogFile.WriteLine(e);
}
}
// サマリー情報の書き込み
objLogFile.WriteLine("----------------------------------------");
objLogFile.WriteLine(fileCnt + "件のファイルを処理しました。");
// logファイルのクローズ
objLogFile.Close();
// 完了メッセーの表示
WScript.echo(
"mission completed\n"
+ "作業結果は\n"
+ this.objShell.CurrentDirectory
+ "\\" + logFileName + "\n"
+ "参照"
);
}
//---------------------------------
// サブフォルダも含めて動画ファイルの再生時間をlogファイルに書き込む
//---------------------------------
this.logPlayTime = function (_objLogFile, _path) {
var fileCnt = 0;
// パスがフォルダの場合
if (this.objFileSys.FolderExists(_path)) {
// フォルダオブジェクトの生成
var objFolder = this.objFileSys.GetFolder(_path);
// サブフォルダ一覧取得
var subFolders = objFolder.SubFolders;
// 全てのフォルダについて自分を呼び出す
var enuSubFolders = new Enumerator(subFolders);
for (;enuSubFolders.atEnd() == false; enuSubFolders.moveNext()) {
fileCnt += this.logPlayTime(_objLogFile, enuSubFolders.item().Path);
}
// ファイル一覧取得
var files = objFolder.Files
// 全てのファイルについて自分を呼び出す
var enuFiles = new Enumerator(files);
for (; enuFiles.atEnd() == false; enuFiles.moveNext()) {
fileCnt += this.logPlayTime(_objLogFile, enuFiles.item().Path);
}
}
// パスがファイルの場合
else if (this.objFileSys.FileExists(_path)) {
// ファイルオブジェクトの生成
var objFile = this.objFileSys.GetFile(_path);
// 再生時間の取得
var time = this.getPlayTime(objFile.Path);
// logファイルに書き込み
_objLogFile.WriteLine(objFile.Name + "\t" + time);
// ファイル数をインクリメント
fileCnt++;
}
else {
objLogFile.WriteLine("error:" + _path + "は存在しません");
}
return fileCnt;
}
//---------------------------------
// 動画再生時間の取得
//---------------------------------
this.getPlayTime = function(_filePath) {
// 動画ファイルの読み込み
this.objWMP.URL = _filePath;
// ファイル準備中状態の間待つ
while (this.objWMP.playState == 9) {
WScript.Sleep(500);
}
// 再生時間取得
return this.objWMP.currentMedia.durationString;
}
}
ソースコード長いw
var shell = WScript.createObject("WScript.Shell");
WScript.echo(shell.CurrentDirectory);
var datas = {
a:"aa",
b:"bb",
c:"cc"
};
// 辞書(Dictionary)の生成
var objDict = WScript.createObject("Scripting.Dictionary");
for (var key in datas) {
// 要素の追加
objDict.add(key, datas[key]);
}
//--------------------------------------
// プロパティ
//--------------------------------------
// 要素数の取得
var cnt = objDict.Count;
WScript.echo("要素数の取得:" + cnt);
// 要素の取得
WScript.echo("要素の取得1:" + objDict.Item("a"));
WScript.echo("要素の取得2:" + objDict("a"));
// キーを変更する
objDict.Key("a") = "A";
WScript.echo("\"A\"の値:" + objDict.Item("A"));
//--------------------------------------
// メソッド
//--------------------------------------
// キーの存在判定
if (objDict.Exists("A")) {
WScript.echo("\"A\"は存在します");
}
// Enumeratorを使用した反復
var enuDict = new Enumerator(objDict);
var strItems = "";
for (; enuDict.atEnd() == false; enuDict.moveNext()) {
strItems += objDict(enuDict.item()) + ",";
}
WScript.echo(strItems);
// キーを指定して削除
objDict.Remove("b");
objDict.RemoveAll();
WScript.echo("要素数:" + objDict.Count);
紹介しておいてなんですが、機能が微妙な上にJScript(JavaScript)は連装配列が使えるのでDictionaryは使わないかもしれません。
var array = new Array();
array["a"] = "aa";
array["b"] = "bb";
for (var key in array) {
// WScript.echo(array[key]); // WSHの場合
alert(array[key]);
}
try {
// Windows Media Playerコントロールオブジェクト生成
var objWMP = WScript.createObject("WMPlayer.OCX");
// 動画ファイルの読み込み
objWMP.URL = ".\\aaa.wmv";
// ファイル準備中状態の間待つ
while (objWMP.playState == 9) {
WScript.Sleep(500);
}
// 再生時間取得と表示
WScript.echo(objWMP.currentMedia.durationString);
}
catch(e) {
WScript.echo(e);
WScript.Quit();
}
「aaa.wmv」というファイルの再生時間を表示しています。
try {
// FileSystemObject生成
var objFileSys = WScript.CreateObject("Scripting.FileSystemObject");
// ファイル一覧(コレクション)取得
var folder = objFileSys.GetFolder("C:");
var files = folder.Files;
// Enumeratorを使用してファイル一覧を反復する
var str = "";
var iter = new Enumerator(files);
for (;iter.atEnd() == false; iter.moveNext()) {
str += iter.item().Name + "\n";
}
// ファイル一覧表示
WScript.echo(str);
}
catch (e) {
WScript.echo(e);
WScript.quit();
}