CREATEOLEOBJ

Contents

構文
CREATEOLEOBJ( COMオブジェクト名 )
引数
COMオブジェクト名
COMオブジェクト名
戻値

COMオブジェクト

COMからメソッド使用時に引数に値取得(OUT引数)がある場合は、引数の変数の前に Var を付ける

プログラム実行例

セルに文字列を入力(A1形式)

// Excelを起動 EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.Visible = TRUE // Excelをアクティブ化 ID = GETID("Microsoft Excel") CTRLWIN(ID, ACTIVATE) // 新規ブックの作成 EXCEL.Workbooks.Add() // セルA1に「UWSC」と代入する EXCEL.Range("A1").Value = "UWSC" // 確認メッセージを表示しない //EXCEL.DisplayAlerts = FALSE // Excelを終了する //EXCEL.Quit

セルに文字列を入力(R1C1形式)

// Excelを起動 EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.Visible = TRUE // Excelをアクティブ化 ID = GETID("Microsoft Excel") CTRLWIN(ID, ACTIVATE) // 新規ブックの作成 EXCEL.Workbooks.Add() // A1セルに「UWSC」と代入する EXCEL.Cells(1, 1).Value = "UWSC" // 確認メッセージを表示しない //EXCEL.DisplayAlerts = FALSE // Excelを終了する //EXCEL.Quit

UWSC.INIよりUWSC本体のウィンドウの幅と高さを取得

DIM WshShell = CREATEOLEOBJ("WScript.Shell") DIM username = WshShell.ExpandEnvironmentStrings("%USERNAME%") SELECT TRUE // Vista以降 CASE KINDOFOS() >= 20 path = "C:\Users\" + username + "\AppData\Roaming\UWSC\UWSC.INI" // Windows XP CASE KINDOFOS() = 13 path = "C:\Documents and Settings\" + username + "\Application Data\UWSC" DEFAULT MSGBOX("UWSC.INIのパスを特定できませんでした。") EXIT SELEND // SETセクションのPositionキーの値を取得 PRINT READINI("SET", "Position", path)

ユーザー名を取得

DIM WshShell = CREATEOLEOBJ("WScript.Shell") PRINT WshShell.ExpandEnvironmentStrings("%USERNAME%")

コントロールパネルを起動する

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.ControlPanelItem("control") SLEEP(3.000) DIM ID = GETID("コントロール パネル") CTRLWIN(ID, CLOSE)

サービスをすべて取得し、そのサービスをユーザーが開始・停止できるかどうかをブール値で返す

DIM Shell = CREATEOLEOBJ("Shell.Application") DIM str = DOSCMD("sc query state=all | findstr /B <#DBL>SERVICE_NAME:<#DBL>") DIM Matches = reExecute(str, "SERVICE_NAME: (.*?)\r\n") DIM services[Matches.Count] FOR n = 0 TO Matches.Count - 1 DIM service = Matches.Item(n).SubMatches(0) services[n] = service + ":" + Shell.CanStartStopService(service) NEXT QSORT(services, QSRT_UNICODEA) FOR service IN services PRINT service NEXT ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND
結果
AarSvc_4de65:False
AdobeARMservice:False
AJRouter:False
ALG:False
ALUpdateService:False
(中略)
WwanSvc:False
XblAuthManager:False
XblGameSave:False
XboxGipSvc:False
XboxNetApiSvc:False

指定したテキストファイルのパスを出力

DIM Excel = CREATEOLEOBJ("Excel.Application") DIM path = Excel.Application.GetOpenFilename("テキスト文書,*.txt,すべてのファイル,*.*") IF path <> FALSE THEN PRINT path Excel.Quit

UWSCを起動したときのウィンドウの座標をカーソル位置に書き換える

// UWSCを終了 CTRLWIN(GETID("UWSC Pro"), CLOSE) DIM WshShell = CREATEOLEOBJ("WScript.Shell") DIM username = WshShell.ExpandEnvironmentStrings("%USERNAME%") SELECT TRUE // Vista以降 CASE KINDOFOS() >= 20 path = "C:\Users\" + username + "\AppData\Roaming\UWSC\UWSC.INI" // Windows XP CASE KINDOFOS() = 13 path = "C:\Documents and Settings\" + username + "\Application Data\UWSC\UWSC.INI" DEFAULT MSGBOX("UWSC.INIのパスを特定できませんでした。") EXIT SELEND // SETセクションのPositionキーの値を取得 PRINT WRITEINI("SET", "Position", G_MOUSE_X + "," + G_MOUSE_Y, path)

起動しているInternet Explorerの数を出力

DIM Shell = CREATEOLEOBJ("Shell.Application") DIM cnt = 0 FOR n = 0 TO Shell.Windows.Count - 1  IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 NEXT   PRINT cnt

Windowsの稼働時間を取得

HASHTBL INFO DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM filename = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "SYSTEMINFO.csv")) FID = FOPEN(filename, F_READ OR F_WRITE) FPUT(FID, DOSCMD("systeminfo /FO CSV")) FCLOSE(FID) FID = FOPEN(filename, F_READ OR F_WRITE) FOR col = 0 TO 33 INFO[FGET(FID, 1, col)] = FGET(FID, 2, col) NEXT FCLOSE(FID) FSO.DeleteFile(filename) PRINT INFO["システム起動時間"] ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN fol = FSO.GetParentFolderName(path) filename = FSO.GetBaseName(path) extension = FSO.GetExtensionName(path) i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND
結果
0:08:16:46

生年月日から年齢を計算する

CONST Excel = CREATEOLEOBJ("Excel.Application") DIM birthday, serial, date birthday = "1993/04/05" serial = Excel.Evaluate("DATEVALUE(<#DBL>" + birthday + "<#DBL>)") birthday = Excel.Evaluate("TEXT(<#DBL>" + serial + "<#DBL>, <#DBL>yyyymmdd<#DBL>)") serial = Excel.Evaluate("DATEVALUE(<#DBL>" + today() + "<#DBL>)") date = Excel.Evaluate("TEXT(<#DBL>" + serial + "<#DBL>, <#DBL>yyyymmdd<#DBL>)") PRINT INT((date - birthDay) / 10000) Excel.Quit ////////////////////////////////////////////////// // 【引数】 // interval : 時間単位(yyyy︰年、m︰月、d︰日) // date1 : 日時1 // date2 : 日時2 // 【戻値】 // date2からdate1を引いた日数を求めます。 ////////////////////////////////////////////////// FUNCTION dateDiff(interval, date1, date2) SELECT interval CASE "yyyy" GETTIME(0, date1) y1 = G_TIME_YY GETTIME(0, date2) y2 = G_TIME_YY d = y2 - y1 CASE "m" GETTIME(0, date1) y1 = G_TIME_YY m1 = G_TIME_MM GETTIME(0, date2) y2 = G_TIME_YY m2 = G_TIME_MM d = (y2 - y1) * 12 + m2 - m1 CASE "d" d1 = GETTIME(0, date1) d2 = GETTIME(0, date2) d = (d2 - d1) / 86400 SELEND RESULT = d FEND ////////////////////////////////////////////////// // 【引数】 // arr : 最大公約数を求める数値を格納した配列 // 【戻値】 // 最大公約数 ////////////////////////////////////////////////// FUNCTION GCD(arr[]) c = LENGTH(arr) rem = arr[c-1] MOD arr[c-2] IFB rem = 0 THEN IFB LENGTH(arr) = 2 THEN RESULT = arr[c-2] EXIT ENDIF RESIZE(arr, c-2) RESULT = GCD(arr) EXIT ENDIF arr[c-1] = arr[c-2] arr[c-2] = rem RESULT = GCD(arr) FEND ////////////////////////////////////////////////// // 【引数】 // 数値 : GETTIMEで取得した曜日の番号(G_TIME_WW=0:日曜….6:土曜) // フォーマット : 以下のアルファベットは数値で指定した対応する曜日に置き換えられます。(aaa : 日〜土、aaaa : 日曜日〜土曜日、ddd : Sun〜Sat、dddd : Sunday〜Saturday) // 【戻値】 // 数値をフォーマットした文字列を返します。 ////////////////////////////////////////////////// FUNCTION getWeekdayName(num, format = "aaa") DIM re = CREATEOLEOBJ("VBScript.RegExp") DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"; DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"; DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"; DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; match = reExecute(format, "(a|d)+") type = match.Item(0).Value RESULT = reReplace(format, EVAL(type + "[" + num + "]"), type) FEND ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // 例)0…00、0.5…12、1.0…24 ////////////////////////////////////////////////// FUNCTION Hour(serial) RESULT = REPLACE(FORMAT(INT(serial * 24), 2), " ", "0") FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str1 : 置換される文字列 // str2 : 置換後の文字列 // Pattern : 置換する文字列のパターン // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現置換後の文字列 ////////////////////////////////////////////////// FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Replace(str1, str2) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // serial : シリアル値 // format : フォーマット // 【戻値】 // 数値を表示書式に基づいて変換した文字列 ////////////////////////////////////////////////// FUNCTION TEXT(serial, format) SELECT TRUE CASE reTest(format, "\[h+\]") Matches = reExecute(format, "\[(h+)\]") RESULT = TEXT(Hour(serial), strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "^h+$") Matches = reExecute(format, "^(h+)$") RESULT = TEXT(Hour(serial) MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "\[m+\]") Matches = reExecute(format, "\[(m+)\]") RESULT = TEXT(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE format = "m" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_MM, "0") CASE format = "mm" GETTIME(serial, "1899/12/30") RESULT = G_TIME_MM2 CASE format = "s" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_SS, "0") CASE format = "ss" GETTIME(serial, "1899/12/30") RESULT = G_TIME_SS2 CASE format = "yyyy" GETTIME(serial, "1899/12/30") RESULT = G_TIME_YY4 CASE format = "yy" GETTIME(serial, "1899/12/30") RESULT = COPY(G_TIME_YY4, 3, 2) CASE format = "e" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 2018 // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1988 // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1925 // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1911 // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1867 SELEND CASE format = "g" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "R" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "H" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "S" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "T" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "M" SELEND CASE format = "gg" RESULT = COPY(TEXT(serial, "ggg"), 1, 1) CASE format = "ggg" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "令和" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "平成" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "昭和" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "大正" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "明治" SELEND CASE format = "mmmmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 1) CASE format = "mmmm" SELECT TEXT(serial, "m") CASE 1; RESULT = "January" CASE 2; RESULT = "February" CASE 3; RESULT = "March" CASE 4; RESULT = "April" CASE 5; RESULT = "May" CASE 6; RESULT = "June" CASE 7; RESULT = "July" CASE 8; RESULT = "August" CASE 9; RESULT = "September" CASE 10; RESULT = "October" CASE 11; RESULT = "November" CASE 12; RESULT = "December" SELEND CASE format = "mmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 3) CASE format = "dd" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD2, "00") CASE format = "d" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD, "0") CASE format = "aaaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaaa") CASE format = "aaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaa") CASE format = "dddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "dddd") CASE format = "ddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "ddd") CASE reTest(format, "(0+\.?0+)?%") Matches = reExecute(format, "(0+\.?0+)?%") RESULT = TEXT(serial * 100, Matches.Item(0).SubMatches(0)) + "%" CASE reTest(format, "^(.*?)\/(.*?)$") // 分母、分子 DIM demon, numer // 分数 DIM frac[1] DIM Pattern = "(\d+\.\d*?(\d+)\2+)" IFB reTest(serial, Pattern) THEN Matches = reExecute(serial, Pattern) // 循環節の桁数 digit = LENGTH(Matches.Item(0).SubMatches(1)) denom = POWER(10, digit) - 1 numer = serial * POWER(10, digit) - serial // 分子が小数なら整数に通分する num = POWER(10, LENGTH(numer) - POS(".", numer)) denom = denom * num numer = numer * num ELSE denom = POWER(10, LENGTH(serial) - POS(".", serial)) numer = serial * denom ENDIF frac[0] = denom frac[1] = numer // 最大公約数を求める n = GCD(frac) denom = frac[0] numer = frac[1] // 既約分数にする denom = denom / n numer = numer / n RESULT = numer + "/" + denom CASE reTest(format, "((#+),?)+") RESULT = reReplace(serial, "$1,", "(\d)(?=(\d{3})+(?!\d))") CASE reTest(format, "(0+)\.?(0+)?") Matches = reExecute(format, "(0+)\.?(0+)?") len1 = LENGTH(Matches.Item(0).SubMatches(0)) len2 = LENGTH(Matches.Item(0).SubMatches(1)) DIM arr[] = LENGTH(INT(serial)), len1 IFB POS(".", format) THEN RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0") ELSE RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0") ENDIF CASE reTest(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") DIM arr[2] Matches = reExecute(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") res = "" FOR n = 0 TO Matches.Item(0).SubMatches.Count - 1 arr[n] = Matches.Item(0).SubMatches(n) NEXT DIM res[2] FOR n = 0 TO 2 STEP 2 Matches = reExecute(arr[n], "([^yegmdahs]+)?(([yegmdahs])\3{0,})([^yegmdahs]+)?") FOR m = 0 TO Matches.Count - 1 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(m).SubMatches(1), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE m = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(m+1).SubMatches(1), "d+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(m+1).SubMatches(1), "s+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE m >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(m-1).SubMatches(1), "y+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(m-1).SubMatches(1), "h+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF SELEND CASE reTest(Matches.Item(m).SubMatches(1), "^h+$") IFB TEXT(serial, Matches.Item(m).SubMatches(1)) < 12 THEN res[1] = COPY(arr[1], 1, POS("/", arr[1]) - 1) // 午前 ELSE res[1] = COPY(arr[1], POS("/", arr[1]) + 1) // 午後 ENDIF res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) // それ以外ならば DEFAULT res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) SELEND res[n] = Matches.Item(m).SubMatches(0) + res[n] + Matches.Item(m).SubMatches(3) NEXT NEXT RESULT = JOIN(res, "") CASE reTest(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") res = "" Matches = reExecute(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") FOR n = 0 TO Matches.Count - 1 // mの前がyもしくはmの後がdならば→mは月 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(n).SubMatches(0), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE n = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(n+1).SubMatches(0), "d+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(n+1).SubMatches(0), "s+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE n >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(n-1).SubMatches(0), "y+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(n-1).SubMatches(0), "h+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF SELEND // それ以外ならば DEFAULT res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) SELEND res = res + Matches.Item(n).SubMatches(2) NEXT RESULT = res SELEND FEND ////////////////////////////////////////////////// // 【引数】 // // 【戻値】 // 今日の日付 ////////////////////////////////////////////////// FUNCTION today() GETTIME() RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 FEND
結果
27

今週の土曜日(指定曜日)の日付を求める

DIM Excel = CREATEOLEOBJ("Excel.Application") DIM serial = Excel.Evaluate("TODAY()-WEEKDAY(TODAY(), 2) + 6") Excel.Quit PRINT Excel.Evaluate("TEXT(" + serial + ", <#DBL>yyyy/mm/dd<#DBL>)") ////////////////////////////////////////////////// // 【引数】 // interval : 時間単位(yyyy︰年、m︰月、d︰日) // date1 : 日時1 // date2 : 日時2 // 【戻値】 // date2からdate1を引いた日数を求めます。 ////////////////////////////////////////////////// FUNCTION dateDiff(interval, date1, date2) SELECT interval CASE "yyyy" GETTIME(0, date1) y1 = G_TIME_YY GETTIME(0, date2) y2 = G_TIME_YY d = y2 - y1 CASE "m" GETTIME(0, date1) y1 = G_TIME_YY m1 = G_TIME_MM GETTIME(0, date2) y2 = G_TIME_YY m2 = G_TIME_MM d = (y2 - y1) * 12 + m2 - m1 CASE "d" d1 = GETTIME(0, date1) d2 = GETTIME(0, date2) d = (d2 - d1) / 86400 SELEND RESULT = d FEND ////////////////////////////////////////////////// // 【引数】 // arr : 最大公約数を求める数値を格納した配列 // 【戻値】 // 最大公約数 ////////////////////////////////////////////////// FUNCTION GCD(arr[]) c = LENGTH(arr) rem = arr[c-1] MOD arr[c-2] IFB rem = 0 THEN IFB LENGTH(arr) = 2 THEN RESULT = arr[c-2] EXIT ENDIF RESIZE(arr, c-2) RESULT = GCD(arr) EXIT ENDIF arr[c-1] = arr[c-2] arr[c-2] = rem RESULT = GCD(arr) FEND ////////////////////////////////////////////////// // 【引数】 // 数値 : GETTIMEで取得した曜日の番号(G_TIME_WW=0:日曜….6:土曜) // フォーマット : 以下のアルファベットは数値で指定した対応する曜日に置き換えられます。(aaa : 日〜土、aaaa : 日曜日〜土曜日、ddd : Sun〜Sat、dddd : Sunday〜Saturday) // 【戻値】 // 数値をフォーマットした文字列を返します。 ////////////////////////////////////////////////// FUNCTION getWeekdayName(num, format = "aaa") DIM re = CREATEOLEOBJ("VBScript.RegExp") DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"; DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"; DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"; DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; match = reExecute(format, "(a|d)+") type = match.Item(0).Value RESULT = reReplace(format, EVAL(type + "[" + num + "]"), type) FEND ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // 例)0…00、0.5…12、1.0…24 ////////////////////////////////////////////////// FUNCTION Hour(serial) RESULT = REPLACE(FORMAT(INT(serial * 24), 2), " ", "0") FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str1 : 置換される文字列 // str2 : 置換後の文字列 // Pattern : 置換する文字列のパターン // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現置換後の文字列 ////////////////////////////////////////////////// FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Replace(str1, str2) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // serial : シリアル値 // format : フォーマット // 【戻値】 // 数値を表示書式に基づいて変換した文字列 ////////////////////////////////////////////////// FUNCTION TEXT(serial, format) SELECT TRUE CASE reTest(format, "\[h+\]") Matches = reExecute(format, "\[(h+)\]") RESULT = TEXT(Hour(serial), strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "^h+$") Matches = reExecute(format, "^(h+)$") RESULT = TEXT(Hour(serial) MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "\[m+\]") Matches = reExecute(format, "\[(m+)\]") RESULT = TEXT(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE format = "m" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_MM, "0") CASE format = "mm" GETTIME(serial, "1899/12/30") RESULT = G_TIME_MM2 CASE format = "s" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_SS, "0") CASE format = "ss" GETTIME(serial, "1899/12/30") RESULT = G_TIME_SS2 CASE format = "yyyy" GETTIME(serial, "1899/12/30") RESULT = G_TIME_YY4 CASE format = "yy" GETTIME(serial, "1899/12/30") RESULT = COPY(G_TIME_YY4, 3, 2) CASE format = "e" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 2018 // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1988 // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1925 // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1911 // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1867 SELEND CASE format = "g" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "R" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "H" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "S" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "T" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "M" SELEND CASE format = "gg" RESULT = COPY(TEXT(serial, "ggg"), 1, 1) CASE format = "ggg" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "令和" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "平成" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "昭和" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "大正" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "明治" SELEND CASE format = "mmmmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 1) CASE format = "mmmm" SELECT TEXT(serial, "m") CASE 1; RESULT = "January" CASE 2; RESULT = "February" CASE 3; RESULT = "March" CASE 4; RESULT = "April" CASE 5; RESULT = "May" CASE 6; RESULT = "June" CASE 7; RESULT = "July" CASE 8; RESULT = "August" CASE 9; RESULT = "September" CASE 10; RESULT = "October" CASE 11; RESULT = "November" CASE 12; RESULT = "December" SELEND CASE format = "mmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 3) CASE format = "dd" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD2, "00") CASE format = "d" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD, "0") CASE format = "aaaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaaa") CASE format = "aaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaa") CASE format = "dddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "dddd") CASE format = "ddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "ddd") CASE reTest(format, "(0+\.?0+)?%") Matches = reExecute(format, "(0+\.?0+)?%") RESULT = TEXT(serial * 100, Matches.Item(0).SubMatches(0)) + "%" CASE reTest(format, "^(.*?)\/(.*?)$") // 分母、分子 DIM demon, numer // 分数 DIM frac[1] DIM Pattern = "(\d+\.\d*?(\d+)\2+)" IFB reTest(serial, Pattern) THEN Matches = reExecute(serial, Pattern) // 循環節の桁数 digit = LENGTH(Matches.Item(0).SubMatches(1)) denom = POWER(10, digit) - 1 numer = serial * POWER(10, digit) - serial // 分子が小数なら整数に通分する num = POWER(10, LENGTH(numer) - POS(".", numer)) denom = denom * num numer = numer * num ELSE denom = POWER(10, LENGTH(serial) - POS(".", serial)) numer = serial * denom ENDIF frac[0] = denom frac[1] = numer // 最大公約数を求める n = GCD(frac) denom = frac[0] numer = frac[1] // 既約分数にする denom = denom / n numer = numer / n RESULT = numer + "/" + denom CASE reTest(format, "((#+),?)+") RESULT = reReplace(serial, "$1,", "(\d)(?=(\d{3})+(?!\d))") CASE reTest(format, "(0+)\.?(0+)?") Matches = reExecute(format, "(0+)\.?(0+)?") len1 = LENGTH(Matches.Item(0).SubMatches(0)) len2 = LENGTH(Matches.Item(0).SubMatches(1)) DIM arr[] = LENGTH(INT(serial)), len1 IFB POS(".", format) THEN RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0") ELSE RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0") ENDIF CASE reTest(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") DIM arr[2] Matches = reExecute(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") res = "" FOR n = 0 TO Matches.Item(0).SubMatches.Count - 1 arr[n] = Matches.Item(0).SubMatches(n) NEXT DIM res[2] FOR n = 0 TO 2 STEP 2 Matches = reExecute(arr[n], "([^yegmdahs]+)?(([yegmdahs])\3{0,})([^yegmdahs]+)?") FOR m = 0 TO Matches.Count - 1 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(m).SubMatches(1), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE m = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(m+1).SubMatches(1), "d+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(m+1).SubMatches(1), "s+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE m >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(m-1).SubMatches(1), "y+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(m-1).SubMatches(1), "h+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF SELEND CASE reTest(Matches.Item(m).SubMatches(1), "^h+$") IFB TEXT(serial, Matches.Item(m).SubMatches(1)) < 12 THEN res[1] = COPY(arr[1], 1, POS("/", arr[1]) - 1) // 午前 ELSE res[1] = COPY(arr[1], POS("/", arr[1]) + 1) // 午後 ENDIF res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) // それ以外ならば DEFAULT res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) SELEND res[n] = Matches.Item(m).SubMatches(0) + res[n] + Matches.Item(m).SubMatches(3) NEXT NEXT RESULT = JOIN(res, "") CASE reTest(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") res = "" Matches = reExecute(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") FOR n = 0 TO Matches.Count - 1 // mの前がyもしくはmの後がdならば→mは月 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(n).SubMatches(0), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE n = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(n+1).SubMatches(0), "d+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(n+1).SubMatches(0), "s+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE n >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(n-1).SubMatches(0), "y+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(n-1).SubMatches(0), "h+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF SELEND // それ以外ならば DEFAULT res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) SELEND res = res + Matches.Item(n).SubMatches(2) NEXT RESULT = res SELEND FEND

アカウント毎に迷惑メールの件数を集計(Outlook)

DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM NameSpace = Outlook.GetNameSpace("MAPI") DIM Folders = NameSpace.Folders FOR oFolder IN Folders PRINT "■" + oFolder.Name Folder = NameSpace.Folders(oFolder.Name).Folders("迷惑メール") PRINT Folder.Items.Count + "件" NEXT
結果
■Yahoo!
42516件
■Android
0件

結果は一例です。

受信トレイに新しいフォルダを作成(Outlook)

CONST olFolderInbox = 6 DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM NameSpace = Outlook.GetNameSpace("MAPI") DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox) TRY Folder.Folders.Add("NewFolder") EXCEPT MSGBOX("フォルダを作成できませんでした。") ENDTRY

Excelの絶対パスを返します

DIM Excel = CREATEOLEOBJ("Excel.Application") PRINT Excel.Application.Path Excel.Quit
結果
C:\Program Files\Microsoft Office\Office14

ヘルプトピックを表示します

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Application.Help Excel.Quit // 開いたヘルプのIDを取得 DIM ID = GETID("Excel ヘルプ", "CLViewServer12") SLEEP(3.000) CTRLWIN(ID, CLOSE)

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Workbooks.Add() DIM Range = Excel.Application.Intersect(Excel.Application.Range("A1:G5"), Excel.Application.Range("D2:F6")) Range.Select SLEEP(5.000) Excel.Quit

新しいタスクを追加(Outlook)

CONST olTaskItem = 3 CONST olImportanceHigh = 2 DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM TaskItem = Outlook.CreateItem(olTaskItem) WITH TaskItem // 件名 .Subject = "件名" // 開始日 .StartDate = "2019/09/07" // 期限 .DueDate = "2019/09/10" // アラーム .ReminderSet = TRUE // アラーム時間 .ReminderTime = "2019/09/07 09:00:00 PM" // 進捗状況 .Status = 0 // 優先率 .Importance = olImportanceHigh // 達成率 .PercentComplete = 90 // 本文 .Body = "本文" // 保存 .Save ENDWITH

新しい予定を追加する

CONST olAppointmentItem = 1 DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM AppointmentItem = Outlook.CreateItem(olAppointmentItem) WITH AppointmentItem .Subject = "件名" .Location = "場所" .Start = "2019/10/14 18:00:00" .End = "2019/10/14 21:00:00" .Body = "本文" DIM menu[] = "なし", "0分", "5分", "10分", "15分", "30分", "1時間", "2時間", "3時間", "4時間", "5時間", "6時間", "7時間", "8時間", "9時間", "10時間", "11時間", "0.5日", "18時間", "1日", "2日", "3日", "4日", "1週", "2週" DIM time[] = 0, 0, 5, 10, 15, 30, 60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 1080, 1440, 2880, 4320, 5760, 10080, 20160 n = POPUPMENU(menu, G_MOUSE_X, G_MOUSE_Y) SELECT TRUE CASE n = 0 .ReminderSet = FALSE DEFAULT .ReminderSet = TRUE .ReminderMinutesBeforeStart = time[n] SELEND .Save ENDWITH ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // ////////////////////////////////////////////////// FUNCTION Minute(serial) RESULT = REPLACE(FORMAT(INT(serial * 1440) MOD 60, 2), " ", "0") FEND

現在のプロファイルで利用できるアカウントの数

DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM NameSpace = Outlook.GetNameSpace("MAPI") DIM Accounts = NameSpace.Accounts PRINT Accounts.Count
結果
2

Internet Explorerで開いたページを印刷

ExecWBの第1引数に「OLECMDID_PRINT」を指定すると、[ファイル]メニューの[印刷]を実行するのと同じ動作をします。

またExecWBの第2引数に「OLECMDEXECOPT_DONTPROMPTUSER」を指定しているので。ユーザーの入力を促すことなく印刷が始まります。このプログラムを実行する際は注意してください。

CONST OLECMDID_PRINT = 6 CONST OLECMDEXECOPT_DONTPROMPTUSER = 2 DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com") BusyWait(IE) SLEEP(3.000) // [ファイル]メニューの[印刷] DIM cmdID = OLECMDID_PRINT IE.ExecWB(cmdID, OLECMDEXECOPT_DONTPROMPTUSER) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

Internet Explorerで指定したURLを開きます

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) SLEEP(3.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

指定したURLを新しいタブで開く

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/", $800) tab = getIEObj("http://example.com/") BusyWait(tab) SLEEP(3.000) tab.Quit IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND

POSTデータを送信して指定したURLを開く

HASHTBL data // 送信するデータを「data[名前] = 値」の形式で指定 data["mail"] = "info@example.com" data["address"] = "北海道" DIM arr[LENGTH(data) - 1] FOR n = 0 TO LENGTH(data) - 1 // 連想配列の中身を「名前=値」の形式に変換 arr[n] = arr[n] + data[n, HASH_KEY] + "=" + ENCODE(ENCODE(data[n, HASH_VAL], CODE_UTF8), CODE_URL) NEXT // 配列の中身を「&」で結合 DIM PostData = JOIN(arr, "&") // データをエンコード PostData = ENCODE(PostData, CODE_BYTEARRAY) // PostDataを渡すときは必ず指定 DIM Headers = "Content-Type: application/x-www-form-urlencoded" DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com", , , PostData, Headers) BusyWait(IE) SLEEP(5.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

Internet Explorerの実行ファイルがあるフォルダの絶対パスを返す

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE PRINT IE.FullName IE.Quit
結果
C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE

Internet Explorerを起動しフルスクリーンモードにする

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) IE.FullScreen = TRUE SLEEP(10.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

Internet Explorerを起動しウィンドウの高さを取得する

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) PRINT IE.Height SLEEP(10.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
結果
596

Internet Explorerを起動しウィンドウの左端の座標を取得する

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) PRINT IE.Left SLEEP(10.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
結果
442

Internet Explorerを起動し開いたURLのタイトルを取得します

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) PRINT IE.LocationName SLEEP(10.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
結果
Example Domain

Internet Explorerを起動し開いたURLを取得する

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) PRINT IE.LocationURL SLEEP(10.000) IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
結果
http://example.com/

Internet Explorerでメニューバーが表示されているかどうかを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE PRINT IE.MenuBar SLEEP(10.000) IE.Quit
結果
True

オフラインモードで動作しているかどうかを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE PRINT IE.Offline SLEEP(10.000) IE.Quit
結果
False

Internet Explorer実行ファイルのシステムフォルダを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE PRINT IE.Path SLEEP(10.000) IE.Quit
結果
C:\Program Files (x86)\Internet Explorer\

「コンピュータを検索します」ウィンドウを開く

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.FindComputer

「プリンターを検索します」ウィンドウを開く

DIM Shell = CREATEOLEOBJ("Shell.Application") PRINT Shell.FindPrinter()

ダブルクリックの速度を返す

DIM Shell = CREATEOLEOBJ("Shell.Application") PRINT Shell.GetSystemInformation("DoubleClickTime")
結果
900

プロセッサレベルを返す

DIM Shell = CREATEOLEOBJ("Shell.Application") PRINT Shell.GetSystemInformation("ProcessorLevel")
結果
6

物理メモリ容量をGB単位で取得

DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Capacity = Shell.GetSystemInformation("PhysicalMemoryInstalled") PRINT FORMAT(Capacity / POWER(1024, 3), 4, 2) + "GB"
結果
7.95GB

[日付と時刻の調整]を開く

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.SetTime() DIM ID = GETID("設定", "ApplicationFrameWindow") SLEEP(5.000) CTRLWIN(ID, CLOSE)

すべてのウィンドウを上下に並べて表示

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.TileHorizontally

すべてのウィンドウを左右に並べて表示

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.TileVertically

デスクトップを表示または非表示にする

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.ToggleDesktop

「設定\個人用設定\タスクバー」を表示する

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.TrayProperties

指定した複数のテキストファイルのパスを出力

DIM Excel = CREATEOLEOBJ("Excel.Application") DIM arr = Excel.Application.GetOpenFilename("テキスト文書,*.txt,すべてのファイル,*.*",,,,TRUE) FOR item IN arr PRINT item NEXT Excel.Quit

Excelで新規のブックを開き、アクティブシートの名前を出力します

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Workbooks.Add() DIM Worksheet = Excel.Application.ActiveSheet PRINT Worksheet.Name SLEEP(3.000) Excel.Quit
結果
Sheet1

現在のユーザー名を返します

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Workbooks.Add() PRINT Excel.Application.UserName SLEEP(3.000) Excel.Quit

アクティブセルの座標を出力

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Workbooks.Add() DIM Range = Excel.Application.ActiveCell PRINT Range.Address Excel.Quit

デスクトップのパスを取得

CONST ssfDesktop = 0 DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfDesktop) PRINT Folder.Self.Path
結果
D:\Desktop

環境変数の値を取得

DIM WshShell = CREATEOLEOBJ("WScript.Shell") DIM WshEnvironment = WshShell.Environment("System") PRINT WshEnvironment.Item("Path")
結果
;;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;c:\Program Files (x86)\Common Files\Ulead Systems\MPEG;C:\Program Files (x86)\AOMEI Backupper;%SYSTEMROOT%\System32\OpenSSH\;C:\Program Files\Calibre2\

現在アクティブになっているディレクトリを取得

DIM WshShell = CREATEOLEOBJ("WScript.Shell") PRINT WshShell.CurrentDirectory
結果
D:\TMP

メモ帳を起動

DIM WshShell = CREATEOLEOBJ("WScript.Shell") WshShell.Run("notepad")

電子メールアカウントを返します

DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM Accounts = Outlook.Session.Accounts FOR Account IN Accounts PRINT Account.DisplayName NEXT

アカウントの種類を表す数値を取得

DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM Accounts = Outlook.Session.Accounts FOR Account IN Accounts PRINT Account.AccountType NEXT

ユーザー名を取得

DIM Outlook = CREATEOLEOBJ("Outlook.Application") DIM Accounts = Outlook.Session.Accounts FOR Account IN Accounts PRINT Account.UserName NEXT

デスクトップ(特殊フォルダ)のパスを取得

DIM WshShell = CREATEOLEOBJ("WScript.Shell") PRINT WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop")
結果
D:\Desktop

警告ダイアログを表示

DIM WshShell = CREATEOLEOBJ("WScript.Shell") SELECT WshShell.Popup("警告ダイアログ", , , 1 OR 48) CASE 1 WshShell.Popup("[OK]ボタンが押されました。", , , 0) CASE 2 WshShell.Popup("[キャンセル]ボタンが押されました。", , , 0) SELEND

選択した個人用フォルダーのパスを表示

DIM WshShell = CREATEOLEOBJ("WScript.Shell") DIM str = POWERSHELL("Get-Item -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders' | Select-Object -ExpandProperty Property") DIM arr = SPLIT(str, "<#CR>") QSORT(arr, QSRT_A) arrayFilter(arr, "reTest(%val%, <#DBL>^[A-Za-z]+$<#DBL>)") DIM key = SLCTBOX(SLCT_BTN OR SLCT_STR, 30, "選択した項目のパスを表示", arr) MSGBOX(WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\" + key)) ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND

指定したフォルダを削除

DIM Shell = CREATEOLEOBJ("Shell.Application") DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = Shell.BrowseForFolder(0, "削除するフォルダを選択してください。", 0) IFB MSGBOX("「" + Folder.Items.Item.Path + "」を削除します。よろしいですか?", BTN_YES OR BTN_NO, , , BTN_NO) = BTN_YES THEN FSO.DeleteFolder(Folder.Items.Item.Path) ENDIF

指定したドライブが存在するか

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") PRINT FSO.DriveExists("C")
結果
True

デスクトップにフォルダを作成

CONST ssfDesktop = 0 DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfDesktop) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") WITH FSO .CreateFolder(.BuildPath(Folder.Self.Path, INPUT("デスクトップにフォルダを作成します。<#CR>ファイル名を入力してください。"))) ENDWITH

パス文字列を生成します

CONST ssfDesktop = 0 DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfDesktop) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") PRINT FSO.BuildPath(Folder.Self.Path, INPUT("フォルダ名もしくはファイル名を入力してください。"))

コンピュータ上のすべてのドライブ名とドライブの種類を出力

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Drives = FSO.Drives FOR Drive IN Drives WITH Drive PRINT .DriveLetter SELECT .DriveType CASE 0 PRINT "不明" CASE 1 PRINT "リムーバブルディスク" CASE 2 PRINT "ハードディスク" CASE 3 PRINT "ネットワークドライブ" CASE 4 PRINT "CD-ROMドライブ" CASE 5 PRINT "RAMディスク" SELEND ENDWITH PRINT "----------" NEXT
結果
C
ハードディスク
----------
D
ハードディスク
----------
F
CD-ROMドライブ
----------

選択したファイルの種類を返す

DIM Excel = CREATEOLEOBJ("Excel.Application") DIM path = Excel.GetOpenFilename() IF path <> FALSE THEN PRINT path DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM File = FSO.GetFile(path) PRINT File.Name PRINT File.Type ENDIF
結果
D:\Documents\service.txt
service.txt
テキスト ドキュメント

指定したファイルのサイズを取得

DIM Excel = CREATEOLEOBJ("Excel.Application") DIM path = Excel.GetOpenFilename() IF path <> FALSE THEN DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM File = FSO.GetFile(path) WITH File PRINT "名前:" + .Name PRINT "パス:" + .Path PRINT "サイズ:" + ROUND(.Size / 1024) + "KB" PRINT "種類:" + .Type ENDWITH ENDIF
結果
名前:service.txt
パス:D:\Documents\service.txt
サイズ:44KB
種類:テキスト ドキュメント

指定したページの外部リンク先URLに数字を含むものだけを抽出

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com/") BusyWait(IE) DIM arr[-1] FOR n = 0 TO IE.document.links.length - 1 arrayPush(arr, IE.document.links[n].href) NEXT arrayFilter(arr, "reTest(%val%, <#DBL>\d<#DBL>)") FOR item IN arr PRINT item NEXT ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

指定したフォルダが存在するか

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM FolderName = INPUT("フォルダ名を入力してください。") IFB FSO.FolderExists(FolderName) THEN MSGBOX("「" + FolderName + "」フォルダは存在します。") ELSE MSGBOX("「" + FolderName + "」フォルダは存在しません。") ENDIF

ドライブ情報を取得

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Drives = FSO.Drives FOR Drive IN Drives WITH Drive IFB .IsReady = TRUE THEN PRINT "空き容量:" + ROUND(.AvailableSpace / POWER(1024, 3), -2) + "GB" PRINT "ドライブ文字:" + .DriveLetter PRINT "種類:" + .DriveType PRINT "ファイルシステム:" + .FileSystem PRINT "空き容量:" + ROUND(.FreeSpace / POWER(1024, 3), -2) + "GB" PRINT "準備状態:" + .IsReady PRINT "パス:" + .Path PRINT "ルートフォルダ:" + .RootFolder PRINT "シリアルナンバー:" + .SerialNumber PRINT "ネットワーク共有名:" + .ShareName PRINT "ネットワーク共有のサイズ:" + ROUND(.TotalSize / POWER(1024, 3), -2) + "GB" PRINT "ボリューム名:" + .VolumeName PRINT "----------" ENDIF ENDWITH NEXT
結果
空き容量:5.57GB
ドライブ文字:C
種類:2
ファイルシステム:NTFS
空き容量:5.57GB
準備状態:True
パス:C:
ルートフォルダ:C:\
シリアルナンバー:-266948359
ネットワーク共有名:
ネットワーク共有のサイズ:150GB
ボリューム名:S3A9247D001
----------
空き容量:11GB
ドライブ文字:D
種類:2
ファイルシステム:NTFS
空き容量:11GB
準備状態:True
パス:D:
ルートフォルダ:D:\
シリアルナンバー:340155053
ネットワーク共有名:
ネットワーク共有のサイズ:523.75GB
ボリューム名:DATA
----------

一時ファイルの名前を取得

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") MSGBOX(FSO.GetTempName)
結果
rad45437.tmp

Windowsフォルダのファイル情報を取得

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(0) FOR File IN Folder.Files WITH File PRINT "ファイル名<#TAB>" + .Name PRINT "パス<#TAB><#TAB>" + .Path PRINT "サイズ<#TAB><#TAB>" + ROUND(.Size / 1024, -2) + "KB" ENDWITH PRINT "----------" NEXT
結果
ファイル名	bfsvc.exe
パス		C:\Windows\bfsvc.exe
サイズ		71.5KB
----------
ファイル名	Bluestream.bmp
パス		C:\Windows\Bluestream.bmp
サイズ		2304.05KB
----------
ファイル名	bootstat.dat
パス		C:\Windows\bootstat.dat
サイズ		66KB
----------
ファイル名	BRRBCOM.INI
パス		C:\Windows\BRRBCOM.INI
サイズ		0KB
----------
ファイル名	Core.xml
パス		C:\Windows\Core.xml
サイズ		33.16KB
----------
ファイル名	csup.txt
パス		C:\Windows\csup.txt
サイズ		0.01KB
----------
ファイル名	diagerr.xml
パス		C:\Windows\diagerr.xml
サイズ		11.17KB
----------
ファイル名	diagwrn.xml
パス		C:\Windows\diagwrn.xml
サイズ		11.17KB
----------
ファイル名	eiunin21.exe
パス		C:\Windows\eiunin21.exe
サイズ		609KB
----------
ファイル名	EPMBatch.ept
パス		C:\Windows\EPMBatch.ept
サイズ		1.09KB
----------
ファイル名	explorer.exe
パス		C:\Windows\explorer.exe
サイズ		4507.44KB
----------
ファイル名	HelpPane.exe
パス		C:\Windows\HelpPane.exe
サイズ		1035KB
----------
ファイル名	hh.exe
パス		C:\Windows\hh.exe
サイズ		18KB
----------
ファイル名	iphlpapi.dll
パス		C:\Windows\iphlpapi.dll
サイズ		92.5KB
----------
ファイル名	mib.bin
パス		C:\Windows\mib.bin
サイズ		42.12KB
----------
ファイル名	msdfmap.ini
パス		C:\Windows\msdfmap.ini
サイズ		1.37KB
----------
ファイル名	NDSTray.INI
パス		C:\Windows\NDSTray.INI
サイズ		0KB
----------
ファイル名	notepad.exe
パス		C:\Windows\notepad.exe
サイズ		177KB
----------
ファイル名	pala_wsxga.bmp
パス		C:\Windows\pala_wsxga.bmp
サイズ		3796.93KB
----------
ファイル名	pala_wuxga.bmp
パス		C:\Windows\pala_wuxga.bmp
サイズ		6750.05KB
----------
ファイル名	pala_wxga.bmp
パス		C:\Windows\pala_wxga.bmp
サイズ		3000.05KB
----------
ファイル名	pala_xga.bmp
パス		C:\Windows\pala_xga.bmp
サイズ		2304.05KB
----------
ファイル名	pbextractclient.dll
パス		C:\Windows\pbextractclient.dll
サイズ		20KB
----------
ファイル名	PBExtractClientGlue.dll
パス		C:\Windows\PBExtractClientGlue.dll
サイズ		27.5KB
----------
ファイル名	PBExtractClientGlue64.dll
パス		C:\Windows\PBExtractClientGlue64.dll
サイズ		27.5KB
----------
ファイル名	PFRO.log
パス		C:\Windows\PFRO.log
サイズ		391.12KB
----------
ファイル名	regedit.exe
パス		C:\Windows\regedit.exe
サイズ		350KB
----------
ファイル名	setupact.log
パス		C:\Windows\setupact.log
サイズ		0.14KB
----------
ファイル名	setuperr.log
パス		C:\Windows\setuperr.log
サイズ		0KB
----------
ファイル名	splwow64.exe
パス		C:\Windows\splwow64.exe
サイズ		129.5KB
----------
ファイル名	system.ini
パス		C:\Windows\system.ini
サイズ		0.21KB
----------
ファイル名	TPSCCfg.exe
パス		C:\Windows\TPSCCfg.exe
サイズ		460.43KB
----------
ファイル名	twain_32.dll
パス		C:\Windows\twain_32.dll
サイズ		63KB
----------
ファイル名	twin.dlt
パス		C:\Windows\twin.dlt
サイズ		5.55KB
----------
ファイル名	win.ini
パス		C:\Windows\win.ini
サイズ		0.47KB
----------
ファイル名	WindowsShell.Manifest
パス		C:\Windows\WindowsShell.Manifest
サイズ		0.65KB
----------
ファイル名	WindowsUpdate.log
パス		C:\Windows\WindowsUpdate.log
サイズ		0.27KB
----------
ファイル名	winhlp32.exe
パス		C:\Windows\winhlp32.exe
サイズ		11.5KB
----------
ファイル名	WLXPGSS.SCR
パス		C:\Windows\WLXPGSS.SCR
サイズ		294.86KB
----------
ファイル名	WMPrfJpn.prx
パス		C:\Windows\WMPrfJpn.prx
サイズ		22.76KB
----------
ファイル名	WMSysPr9.prx
パス		C:\Windows\WMSysPr9.prx
サイズ		309.22KB
----------
ファイル名	write.exe
パス		C:\Windows\write.exe
サイズ		11KB
----------
ファイル名	_MSRSTRT.EXE
パス		C:\Windows\_MSRSTRT.EXE
サイズ		2.5KB
----------

一時ファイルを作成・削除

CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) DIM path = Folder.Path DIM name = FSO.GetTempName path = FSO.BuildPath(path, name) PRINT path DIM TextStream = FSO.CreateTextFile(path) // 現在の日時をファイルに書き込む TextStream.WriteLine(now()) TextStream.Close // Tempファイルを削除 // FSO.DeleteFile(path) FUNCTION now() GETTIME() RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2 FEND
結果
D:\TMP\rad83BB3.tmp

指定したファイルが存在するか

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM path = INPUT("ファイルパスを入力してください。") IFB FSO.FileExists(path) = TRUE THEN MSGBOX("「" + path + "」は存在します。") ELSE MSGBOX("「" + path + "」は存在しませn。") ENDIF

現在のディレクトリと指定したパスから絶対パスを取得

現在のディレクトリが「D:\Documents\UWSC」のときの動作。

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") WITH FSO PRINT .GetAbsolutePathName("MyFolder") PRINT .GetAbsolutePathName("C:") PRINT .GetAbsolutePathName("D:") PRINT .GetAbsolutePathName("..\") PRINT .GetAbsolutePathName("..\MyFolder") PRINT .GetAbsolutePathName("..\..\") PRINT .GetAbsolutePathName(GET_UWSC_NAME) ENDWITH
結果
D:\Documents\UWSC\MyFolder
C:\
D:\Documents\UWSC
D:\Documents
D:\Documents\MyFolder
D:\
D:\Documents\UWSC\FSO.GetAbsolutePathName.UWS

Wordを起動する

CONST xlMicrosoftWord = 1 DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE // Wordを起動 Excel.Application.ActivateMicrosoftApp(xlMicrosoftWord) DIM ID = GETID("Microsoft Word", "OpusApp") SLEEP(5.000) // Wordを閉じる CTRLWIN(ID, CLOSE) Excel.Quit

アクティブセルに文字列を入力する

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Workbooks.Add() DIM Range = Excel.Application.ActiveCell SLEEP(1.000) Range.Value = "abc" SLEEP(3.000) Excel.Application.DisplayAlerts = FALSE Excel.Quit

アクティブシート名を取得する

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE Excel.Workbooks.Add() DIM Worksheet = Excel.Application.ActiveSheet PRINT Worksheet.Name Excel.Application.DisplayAlerts = FALSE Excel.Quit

アクティブプリンターの名前を取得

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE PRINT Excel.Application.ActivePrinter Excel.Application.DisplayAlerts = FALSE Excel.Quit
結果
Brother DCP-J963N Printer on Ne03:

スタートアップフォルダのパスを取得

DIM Excel = CREATEOLEOBJ("Excel.Application") Excel.Visible = TRUE PRINT Excel.Application.StartupPath //Excel.Application.DisplayAlerts = FALSE //Excel.Quit
結果
C:\Users\akita\AppData\Roaming\Microsoft\Excel\XLSTART

Yahoo!ファイナンスから米ドル・ユーロ・豪ドルのレートを取得

IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://info.finance.yahoo.co.jp/fx/") BusyWait(IE) // ループを抜ける用のフラグ PUBLIC flg = FALSE // ESCキーを入力でloopBreak関数を実行 SETHOTKEY(VK_ESC, , "loopBreak") REPEAT usd = IE.document.getElementById("USDJPY_top_bid").innerText eur = IE.document.getElementById("EURJPY_top_bid").innerText aud = IE.document.getElementById("AUDJPY_top_bid").innerText msg = "米ドル/円<#TAB>" + usd + "<#CR>" + _ "ユーロ/円<#TAB>" + eur + "<#CR>" + _ "豪ドル/円<#TAB>" + aud + "<#CR>" + _ "ESCで終了" FUKIDASI(msg) SLEEP(0.01) UNTIL flg = TRUE IE.Quit PROCEDURE loopBreak() flg = TRUE FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

Googleでの検索結果を取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://google.com") BusyWait(IE) IESETDATA(IE, INPUT("検索ワードを入力"), "q") IESETDATA(IE, TRUE, "btnK") BusyWait(IE) DIM elements = IE.document.getElementsByClassName("rc") FOR element IN elements PRINT element.getElementsByClassName("LC20lb").Item(0).textContent PRINT element.getElementsByClassName("s").Item(0).textContent PRINT "----------" NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

内部リンクを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com") BusyWait(IE) DIM links[-1] FOR n = 0 TO IE.document.links.length - 1 arrayPush(links, IE.document.links[n].href) NEXT arrayFilter(links, "POS(<#DBL>" + IE.document.domain + "<#DBL>, %val%)") FOR item IN links PRINT item NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

外部リンクを取得

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://example.com") BusyWait(IE) DIM links[-1] FOR n = 0 TO IE.document.links.length - 1 arrayPush(links, IE.document.links[n].href) NEXT arrayFilter(links, "!POS(<#DBL>" + IE.document.domain + "<#DBL>, %val%)") FOR item IN links PRINT item NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

Yahoo! JAPANトップページのメニューを取得

IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("http://yahoo.co.jp") BusyWait(IE) DIM element = IE.document.getElementById("ToolList") DIM elements = element.getElementsByTagName("li") FOR element IN elements PRINT element.textContent NEXT IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
<div id="ToolList"> <ul> <li>ショッピング</li> <li>PayPayモール</li> <li>ヤフオク!</li> <li>PayPayフリマ</li> <li>ZOZOTOWN</li> <li>LOHACO</li> <li>トラベル</li> <li>一休.com</li> <li>一休.comレストラン</li> <li>ニュース</li> <li>天気・災害</li> <li>スポーツナビ</li> <li>ファイナンス</li> <li>テレビ</li> <li>映画</li> <li>GYAO!</li> <li>ゲーム</li> <li>Yahoo!モバゲー</li> <li>ebookjapan</li> <li>占い</li> <li>地図</li> <li>路線情報</li> <li>Retty</li> <li>クラシル</li> <li>不動産</li> <li>自動車</li> <li>TRILL <li>パートナー</li> </ul> </div>
結果
ショッピング
PayPayモール
ヤフオク!
PayPayフリマ
ZOZOTOWN
LOHACO
トラベル
一休.com
一休.comレストラン
ニュース
天気・災害
スポーツナビ
ファイナンス
テレビ
映画
GYAO!
ゲーム
Yahoo!モバゲー
ebookjapan
占い
地図
路線情報
Retty
クラシル
不動産
自動車
TRILL
パートナー

デフォルトプリンターを取得

CONST ssfPRINTERS = 4 DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfPRINTERS) DIM FolderItems = Folder.Items HASHTBL iColumn FOR n = 0 TO 350 iColumn[Folder.GetDetailsOf(EMPTYPARAM, n)] = n NEXT FOR n = 0 TO FolderItems.Count - 1 DIM FolderItem = FolderItems.Item(n) DIM PrinterName = Folder.GetDetailsOf(FolderItem, iColumn["名前"]) FOR i = 0 TO FolderItem.Verbs.Count - 1 IF POS("通常使うプリンターに設定", FolderItem.Verbs.Item(i).Name) <> 0 THEN CONTINUE 2 NEXT PRINT PrinterName BREAK NEXT
結果
Brother DCP-J963N Printer

歌ネットから歌詞を取得してテキストファイルに保存

CONST ssfDesktop = 0 DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://www.uta-net.com/song/280568/") BusyWait(IE) DIM element, elements, name, lyrics element = IE.document.getElementById("view_kashi") elements = element.getElementsByClassName("title") name = TRIM(elements.Item(0).innerText) element = IE.document.getElementById("kashi_area") lyrics = element.innerText IE.Quit DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace(ssfDesktop) DIM path = Folder.Self.Path DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") path = uniqueFilename(FSO.BuildPath(path, name + ".txt")) DIM FID = FOPEN(path, F_READ OR F_WRITE) FPUT(FID, lyrics) FCLOSE(FID) ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN fol = FSO.GetParentFolderName(path) filename = FSO.GetBaseName(path) extension = FSO.GetExtensionName(path) i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND

指定したフォルダの曲名と合計時間を出力

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Excel = CREATEOLEOBJ("Excel.Application") DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace("D:\Music\Hey! Say! JUMP\COSMIC☆HUMAN") DIM serial HASHTBL iColumn FOR n = 0 TO 350 iColumn[Folder.GetDetailsOf(EMPTYPARAM, n)] = n NEXT FOR n = 0 TO Folder.Items.Count - 1 WITH Folder DIM FolderItem = .Items.Item(n) PRINT .GetDetailsOf(FolderItem, iColumn["名前"]) serial = serial + timeValue(.GetDetailsOf(FolderItem, iColumn["長さ"])) ENDWITH NEXT PRINT "----------" PRINT "合計時間<#TAB>" + TEXT(serial, "h:m:s") ////////////////////////////////////////////////// // 【引数】 // interval : 時間単位(yyyy︰年、m︰月、d︰日) // date1 : 日時1 // date2 : 日時2 // 【戻値】 // date2からdate1を引いた日数を求めます。 ////////////////////////////////////////////////// FUNCTION dateDiff(interval, date1, date2) SELECT interval CASE "yyyy" GETTIME(0, date1) y1 = G_TIME_YY GETTIME(0, date2) y2 = G_TIME_YY d = y2 - y1 CASE "m" GETTIME(0, date1) y1 = G_TIME_YY m1 = G_TIME_MM GETTIME(0, date2) y2 = G_TIME_YY m2 = G_TIME_MM d = (y2 - y1) * 12 + m2 - m1 CASE "d" d1 = GETTIME(0, date1) d2 = GETTIME(0, date2) d = (d2 - d1) / 86400 SELEND RESULT = d FEND ////////////////////////////////////////////////// // 【引数】 // arr : 最大公約数を求める数値を格納した配列 // 【戻値】 // 最大公約数 ////////////////////////////////////////////////// FUNCTION GCD(arr[]) c = LENGTH(arr) rem = arr[c-1] MOD arr[c-2] IFB rem = 0 THEN IFB LENGTH(arr) = 2 THEN RESULT = arr[c-2] EXIT ENDIF RESIZE(arr, c-2) RESULT = GCD(arr) EXIT ENDIF arr[c-1] = arr[c-2] arr[c-2] = rem RESULT = GCD(arr) FEND ////////////////////////////////////////////////// // 【引数】 // 数値 : GETTIMEで取得した曜日の番号(G_TIME_WW=0:日曜….6:土曜) // フォーマット : 以下のアルファベットは数値で指定した対応する曜日に置き換えられます。(aaa : 日〜土、aaaa : 日曜日〜土曜日、ddd : Sun〜Sat、dddd : Sunday〜Saturday) // 【戻値】 // 数値をフォーマットした文字列を返します。 ////////////////////////////////////////////////// FUNCTION getWeekdayName(num, format = "aaa") DIM re = CREATEOLEOBJ("VBScript.RegExp") DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"; DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"; DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"; DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; match = reExecute(format, "(a|d)+") type = match.Item(0).Value RESULT = reReplace(format, EVAL(type + "[" + num + "]"), type) FEND ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // 例)0…00、0.5…12、1.0…24 ////////////////////////////////////////////////// FUNCTION Hour(serial) RESULT = REPLACE(FORMAT(INT(serial * 24), 2), " ", "0") FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str1 : 置換される文字列 // str2 : 置換後の文字列 // Pattern : 置換する文字列のパターン // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現置換後の文字列 ////////////////////////////////////////////////// FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Replace(str1, str2) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // serial : シリアル値 // format : フォーマット // 【戻値】 // 数値を表示書式に基づいて変換した文字列 ////////////////////////////////////////////////// FUNCTION TEXT(serial, format) SELECT TRUE CASE reTest(format, "\[h+\]") Matches = reExecute(format, "\[(h+)\]") RESULT = TEXT(Hour(serial), strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "^h+$") Matches = reExecute(format, "^(h+)$") RESULT = TEXT(Hour(serial) MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "\[m+\]") Matches = reExecute(format, "\[(m+)\]") RESULT = TEXT(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE format = "m" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_MM, "0") CASE format = "mm" GETTIME(serial, "1899/12/30") RESULT = G_TIME_MM2 CASE format = "s" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_SS, "0") CASE format = "ss" GETTIME(serial, "1899/12/30") RESULT = G_TIME_SS2 CASE format = "yyyy" GETTIME(serial, "1899/12/30") RESULT = G_TIME_YY4 CASE format = "yy" GETTIME(serial, "1899/12/30") RESULT = COPY(G_TIME_YY4, 3, 2) CASE format = "e" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 2018 // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1988 // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1925 // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1911 // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1867 SELEND CASE format = "g" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "R" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "H" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "S" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "T" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "M" SELEND CASE format = "gg" RESULT = COPY(TEXT(serial, "ggg"), 1, 1) CASE format = "ggg" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "令和" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "平成" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "昭和" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "大正" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "明治" SELEND CASE format = "mmmmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 1) CASE format = "mmmm" SELECT TEXT(serial, "m") CASE 1; RESULT = "January" CASE 2; RESULT = "February" CASE 3; RESULT = "March" CASE 4; RESULT = "April" CASE 5; RESULT = "May" CASE 6; RESULT = "June" CASE 7; RESULT = "July" CASE 8; RESULT = "August" CASE 9; RESULT = "September" CASE 10; RESULT = "October" CASE 11; RESULT = "November" CASE 12; RESULT = "December" SELEND CASE format = "mmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 3) CASE format = "dd" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD2, "00") CASE format = "d" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD, "0") CASE format = "aaaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaaa") CASE format = "aaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaa") CASE format = "dddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "dddd") CASE format = "ddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "ddd") CASE reTest(format, "(0+\.?0+)?%") Matches = reExecute(format, "(0+\.?0+)?%") RESULT = TEXT(serial * 100, Matches.Item(0).SubMatches(0)) + "%" CASE reTest(format, "^(.*?)\/(.*?)$") // 分母、分子 DIM demon, numer // 分数 DIM frac[1] DIM Pattern = "(\d+\.\d*?(\d+)\2+)" IFB reTest(serial, Pattern) THEN Matches = reExecute(serial, Pattern) // 循環節の桁数 digit = LENGTH(Matches.Item(0).SubMatches(1)) denom = POWER(10, digit) - 1 numer = serial * POWER(10, digit) - serial // 分子が小数なら整数に通分する num = POWER(10, LENGTH(numer) - POS(".", numer)) denom = denom * num numer = numer * num ELSE denom = POWER(10, LENGTH(serial) - POS(".", serial)) numer = serial * denom ENDIF frac[0] = denom frac[1] = numer // 最大公約数を求める n = GCD(frac) denom = frac[0] numer = frac[1] // 既約分数にする denom = denom / n numer = numer / n RESULT = numer + "/" + denom CASE reTest(format, "((#+),?)+") RESULT = reReplace(serial, "$1,", "(\d)(?=(\d{3})+(?!\d))") CASE reTest(format, "(0+)\.?(0+)?") Matches = reExecute(format, "(0+)\.?(0+)?") len1 = LENGTH(Matches.Item(0).SubMatches(0)) len2 = LENGTH(Matches.Item(0).SubMatches(1)) DIM arr[] = LENGTH(INT(serial)), len1 IFB POS(".", format) THEN RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0") ELSE RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0") ENDIF CASE reTest(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") DIM arr[2] Matches = reExecute(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") res = "" FOR n = 0 TO Matches.Item(0).SubMatches.Count - 1 arr[n] = Matches.Item(0).SubMatches(n) NEXT DIM res[2] FOR n = 0 TO 2 STEP 2 Matches = reExecute(arr[n], "([^yegmdahs]+)?(([yegmdahs])\3{0,})([^yegmdahs]+)?") FOR m = 0 TO Matches.Count - 1 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(m).SubMatches(1), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE m = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(m+1).SubMatches(1), "d+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(m+1).SubMatches(1), "s+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE m >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(m-1).SubMatches(1), "y+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(m-1).SubMatches(1), "h+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF SELEND CASE reTest(Matches.Item(m).SubMatches(1), "^h+$") IFB TEXT(serial, Matches.Item(m).SubMatches(1)) < 12 THEN res[1] = COPY(arr[1], 1, POS("/", arr[1]) - 1) // 午前 ELSE res[1] = COPY(arr[1], POS("/", arr[1]) + 1) // 午後 ENDIF res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) // それ以外ならば DEFAULT res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) SELEND res[n] = Matches.Item(m).SubMatches(0) + res[n] + Matches.Item(m).SubMatches(3) NEXT NEXT RESULT = JOIN(res, "") CASE reTest(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") res = "" Matches = reExecute(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") FOR n = 0 TO Matches.Count - 1 // mの前がyもしくはmの後がdならば→mは月 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(n).SubMatches(0), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE n = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(n+1).SubMatches(0), "d+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(n+1).SubMatches(0), "s+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE n >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(n-1).SubMatches(0), "y+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(n-1).SubMatches(0), "h+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF SELEND // それ以外ならば DEFAULT res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) SELEND res = res + Matches.Item(n).SubMatches(2) NEXT RESULT = res SELEND FEND ////////////////////////////////////////////////// // 【引数】 // 時間 : 「hh:mm:ss」形式 // 【戻値】 // シリアル値 (例)0…00:00:00、0.5…12:00:00、1…24:00:00 ////////////////////////////////////////////////// FUNCTION timeValue(str) HASHTBL Pattern Pattern["hour"] = "(1[0-9]|2[0-4]|0?[0-9])" Pattern["minute"] = "([1-5][0-9]|60|0?[0-9])" pattern["second"] = "([1-5][0-9]|60|0?[0-9])" SELECT TRUE CASE reTest(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"] + " (AM|PM)") Matches = reExecute(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"] + " (AM|PM)") WITH Matches.Item(0) SELECT .SubMatches(3) CASE "AM" time = (.SubMatches(0) / 24) + (.SubMatches(1) / 1440) + (.SubMatches(2) / 86400) CASE "PM" time = ((.SubMatches(0) + 12) / 24) + (.SubMatches(1) / 1440) + (.SubMatches(2) / 86400) SELEND ENDWITH CASE reTest(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"]) Matches = reExecute(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"]) WITH Matches.Item(0) time = (.SubMatches(0) / 24) + (.SubMatches(1) / 1440) + (.SubMatches(2) / 86400) ENDWITH SELEND RESULT = time FEND
結果
01 COSMIC☆HUMAN.wav
02 SWEET or HOT?.wav
03 ルーレット.wav
04 Draw My Life!.wav
05 COSMIC☆HUMAN (オリジナル・カラオケ).wav
06 SWEET or HOT- (オリジナル・カラオケ).wav
07 ルーレット (オリジナル・カラオケ).wav
08 Draw My Life! (オリジナル・カラオケ).wav
----------
合計時間	00:34:16

指定したフォルダの動画の合計時間を求める

DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.NameSpace("D:\Videos\Apowersoft\Video Download Capture 6\Download\絶対零度") DIM FolderItems = Folder.Items DIM serial HASHTBL iColumn FOR n = 0 TO 350 iColumn[Folder.GetDetailsOf(EMPTYPARAM, n)] = n NEXT FOR n = 0 TO FolderItems.Count - 1 WITH Folder DIM FolderItem = .Items.Item(n) extension = .GetDetailsOf(FolderItem, iColumn["ファイル拡張子"]) IFB FolderItem.IsFolder = FALSE THEN serial = serial + timeValue(.GetDetailsOf(FolderItem, iColumn["長さ"])) ENDIF ENDWITH NEXT PRINT TEXT(serial, "hh:mm:ss") ////////////////////////////////////////////////// // 【引数】 // interval : 時間単位(yyyy︰年、m︰月、d︰日) // date1 : 日時1 // date2 : 日時2 // 【戻値】 // date2からdate1を引いた日数を求めます。 ////////////////////////////////////////////////// FUNCTION dateDiff(interval, date1, date2) SELECT interval CASE "yyyy" GETTIME(0, date1) y1 = G_TIME_YY GETTIME(0, date2) y2 = G_TIME_YY d = y2 - y1 CASE "m" GETTIME(0, date1) y1 = G_TIME_YY m1 = G_TIME_MM GETTIME(0, date2) y2 = G_TIME_YY m2 = G_TIME_MM d = (y2 - y1) * 12 + m2 - m1 CASE "d" d1 = GETTIME(0, date1) d2 = GETTIME(0, date2) d = (d2 - d1) / 86400 SELEND RESULT = d FEND ////////////////////////////////////////////////// // 【引数】 // arr : 最大公約数を求める数値を格納した配列 // 【戻値】 // 最大公約数 ////////////////////////////////////////////////// FUNCTION GCD(arr[]) c = LENGTH(arr) rem = arr[c-1] MOD arr[c-2] IFB rem = 0 THEN IFB LENGTH(arr) = 2 THEN RESULT = arr[c-2] EXIT ENDIF RESIZE(arr, c-2) RESULT = GCD(arr) EXIT ENDIF arr[c-1] = arr[c-2] arr[c-2] = rem RESULT = GCD(arr) FEND ////////////////////////////////////////////////// // 【引数】 // 数値 : GETTIMEで取得した曜日の番号(G_TIME_WW=0:日曜….6:土曜) // フォーマット : 以下のアルファベットは数値で指定した対応する曜日に置き換えられます。(aaa : 日〜土、aaaa : 日曜日〜土曜日、ddd : Sun〜Sat、dddd : Sunday〜Saturday) // 【戻値】 // 数値をフォーマットした文字列を返します。 ////////////////////////////////////////////////// FUNCTION getWeekdayName(num, format = "aaa") DIM re = CREATEOLEOBJ("VBScript.RegExp") DIM aaa[] = "日", "月", "火", "水", "木", "金", "土"; DIM aaaa[] = "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"; DIM ddd[] = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"; DIM dddd[] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; match = reExecute(format, "(a|d)+") type = match.Item(0).Value RESULT = reReplace(format, EVAL(type + "[" + num + "]"), type) FEND ////////////////////////////////////////////////// // 【引数】 // シリアル値 : 時間を表すシリアル値を指定 // 【戻値】 // 例)0…00、0.5…12、1.0…24 ////////////////////////////////////////////////// FUNCTION Hour(serial) RESULT = REPLACE(FORMAT(INT(serial * 24), 2), " ", "0") FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str1 : 置換される文字列 // str2 : 置換後の文字列 // Pattern : 置換する文字列のパターン // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現置換後の文字列 ////////////////////////////////////////////////// FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Replace(str1, str2) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // serial : シリアル値 // format : フォーマット // 【戻値】 // 数値を表示書式に基づいて変換した文字列 ////////////////////////////////////////////////// FUNCTION TEXT(serial, format) SELECT TRUE CASE reTest(format, "\[h+\]") Matches = reExecute(format, "\[(h+)\]") RESULT = TEXT(Hour(serial), strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "^h+$") Matches = reExecute(format, "^(h+)$") RESULT = TEXT(Hour(serial) MOD 24, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE reTest(format, "\[m+\]") Matches = reExecute(format, "\[(m+)\]") RESULT = TEXT(serial * 1440, strRepeat("0", LENGTH(Matches.Item(0).SubMatches(0)))) CASE format = "m" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_MM, "0") CASE format = "mm" GETTIME(serial, "1899/12/30") RESULT = G_TIME_MM2 CASE format = "s" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_SS, "0") CASE format = "ss" GETTIME(serial, "1899/12/30") RESULT = G_TIME_SS2 CASE format = "yyyy" GETTIME(serial, "1899/12/30") RESULT = G_TIME_YY4 CASE format = "yy" GETTIME(serial, "1899/12/30") RESULT = COPY(G_TIME_YY4, 3, 2) CASE format = "e" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 2018 // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1988 // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1925 // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1911 // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = TEXT(serial, "yyyy") - 1867 SELEND CASE format = "g" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "R" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "H" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "S" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "T" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "M" SELEND CASE format = "gg" RESULT = COPY(TEXT(serial, "ggg"), 1, 1) CASE format = "ggg" SELECT TRUE // 令和 CASE dateDiff("d", "2019/05/01", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "令和" // 平成 CASE dateDiff("d", "1989/01/08", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "平成" // 昭和 CASE dateDiff("d", "1926/12/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "昭和" // 大正 CASE dateDiff("d", "1912/07/30", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "大正" // 明治 CASE dateDiff("d", "1868/01/25", TEXT(serial, "yyyy/mm/dd")) >= 0 RESULT = "明治" SELEND CASE format = "mmmmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 1) CASE format = "mmmm" SELECT TEXT(serial, "m") CASE 1; RESULT = "January" CASE 2; RESULT = "February" CASE 3; RESULT = "March" CASE 4; RESULT = "April" CASE 5; RESULT = "May" CASE 6; RESULT = "June" CASE 7; RESULT = "July" CASE 8; RESULT = "August" CASE 9; RESULT = "September" CASE 10; RESULT = "October" CASE 11; RESULT = "November" CASE 12; RESULT = "December" SELEND CASE format = "mmm" RESULT = COPY(TEXT(serial, "mmmm"), 1, 3) CASE format = "dd" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD2, "00") CASE format = "d" GETTIME(serial, "1899/12/30") RESULT = TEXT(G_TIME_DD, "0") CASE format = "aaaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaaa") CASE format = "aaa" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "aaa") CASE format = "dddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "dddd") CASE format = "ddd" GETTIME(serial, "1899/12/30") RESULT = getWeekdayName(G_TIME_WW, "ddd") CASE reTest(format, "(0+\.?0+)?%") Matches = reExecute(format, "(0+\.?0+)?%") RESULT = TEXT(serial * 100, Matches.Item(0).SubMatches(0)) + "%" CASE reTest(format, "^(.*?)\/(.*?)$") // 分母、分子 DIM demon, numer // 分数 DIM frac[1] DIM Pattern = "(\d+\.\d*?(\d+)\2+)" IFB reTest(serial, Pattern) THEN Matches = reExecute(serial, Pattern) // 循環節の桁数 digit = LENGTH(Matches.Item(0).SubMatches(1)) denom = POWER(10, digit) - 1 numer = serial * POWER(10, digit) - serial // 分子が小数なら整数に通分する num = POWER(10, LENGTH(numer) - POS(".", numer)) denom = denom * num numer = numer * num ELSE denom = POWER(10, LENGTH(serial) - POS(".", serial)) numer = serial * denom ENDIF frac[0] = denom frac[1] = numer // 最大公約数を求める n = GCD(frac) denom = frac[0] numer = frac[1] // 既約分数にする denom = denom / n numer = numer / n RESULT = numer + "/" + denom CASE reTest(format, "((#+),?)+") RESULT = reReplace(serial, "$1,", "(\d)(?=(\d{3})+(?!\d))") CASE reTest(format, "(0+)\.?(0+)?") Matches = reExecute(format, "(0+)\.?(0+)?") len1 = LENGTH(Matches.Item(0).SubMatches(0)) len2 = LENGTH(Matches.Item(0).SubMatches(1)) DIM arr[] = LENGTH(INT(serial)), len1 IFB POS(".", format) THEN RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX) + len2 + 1, len2), " ", "0") ELSE RESULT = REPLACE(FORMAT(serial, CALCARRAY(arr, CALC_MAX)), " ", "0") ENDIF CASE reTest(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") DIM arr[2] Matches = reExecute(format, "(.+)?((?:AM?|am?)\/(?:PM?|pm?))(.+)?") res = "" FOR n = 0 TO Matches.Item(0).SubMatches.Count - 1 arr[n] = Matches.Item(0).SubMatches(n) NEXT DIM res[2] FOR n = 0 TO 2 STEP 2 Matches = reExecute(arr[n], "([^yegmdahs]+)?(([yegmdahs])\3{0,})([^yegmdahs]+)?") FOR m = 0 TO Matches.Count - 1 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(m).SubMatches(1), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE m = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(m+1).SubMatches(1), "d+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(m+1).SubMatches(1), "s+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE m >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(m-1).SubMatches(1), "y+") THEN res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(m-1).SubMatches(1), "h+") THEN res[n] = res[n] + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(m).SubMatches(1)))) ENDIF SELEND CASE reTest(Matches.Item(m).SubMatches(1), "^h+$") IFB TEXT(serial, Matches.Item(m).SubMatches(1)) < 12 THEN res[1] = COPY(arr[1], 1, POS("/", arr[1]) - 1) // 午前 ELSE res[1] = COPY(arr[1], POS("/", arr[1]) + 1) // 午後 ENDIF res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) // それ以外ならば DEFAULT res[n] = res[n] + TEXT(serial, Matches.Item(m).SubMatches(1)) SELEND res[n] = Matches.Item(m).SubMatches(0) + res[n] + Matches.Item(m).SubMatches(3) NEXT NEXT RESULT = JOIN(res, "") CASE reTest(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") res = "" Matches = reExecute(format, "(([yegmdahs])\2{0,})([^yegmdahs]+)?") FOR n = 0 TO Matches.Count - 1 // mの前がyもしくはmの後がdならば→mは月 SELECT TRUE // 「m」を含む CASE reTest(Matches.Item(n).SubMatches(0), "m+") // アルファベット部分の前後で「m」が月か分か判断 SELECT TRUE // 「m」が最初に出現するアルファベットなら CASE n = 0 // 次に出現するアルファベットが「d」なら「m」は月 IFB reTest(Matches.Item(n+1).SubMatches(0), "d+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 次に出現するアルファベットが「s」なら「m」は分 IFB reTest(Matches.Item(n+1).SubMatches(0), "s+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF // 「m」が2番目(2-1=1)以降に出現するアルファベットなら CASE n >= 1 // 前に出現したアルファベットが「y」なら「m」は月 IFB reTest(Matches.Item(n-1).SubMatches(0), "y+") THEN res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) ENDIF // 前に出現したアルファベットが「h」なら「m」は分 IFB reTest(Matches.Item(n-1).SubMatches(0), "h+") THEN res = res + TEXT(INT(serial * 1440) MOD 60, strRepeat("0", LENGTH(Matches.Item(n).SubMatches(0)))) ENDIF SELEND // それ以外ならば DEFAULT res = res + TEXT(serial, Matches.Item(n).SubMatches(0)) SELEND res = res + Matches.Item(n).SubMatches(2) NEXT RESULT = res SELEND FEND ////////////////////////////////////////////////// // 【引数】 // 時間 : 「hh:mm:ss」形式 // 【戻値】 // シリアル値 (例)0…00:00:00、0.5…12:00:00、1…24:00:00 ////////////////////////////////////////////////// FUNCTION timeValue(str) HASHTBL Pattern Pattern["hour"] = "(1[0-9]|2[0-4]|0?[0-9])" Pattern["minute"] = "([1-5][0-9]|60|0?[0-9])" pattern["second"] = "([1-5][0-9]|60|0?[0-9])" SELECT TRUE CASE reTest(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"] + " (AM|PM)") Matches = reExecute(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"] + " (AM|PM)") WITH Matches.Item(0) SELECT .SubMatches(3) CASE "AM" time = (.SubMatches(0) / 24) + (.SubMatches(1) / 1440) + (.SubMatches(2) / 86400) CASE "PM" time = ((.SubMatches(0) + 12) / 24) + (.SubMatches(1) / 1440) + (.SubMatches(2) / 86400) SELEND ENDWITH CASE reTest(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"]) Matches = reExecute(str, Pattern["hour"] + ":" + Pattern["minute"] + ":" + pattern["second"]) WITH Matches.Item(0) time = (.SubMatches(0) / 24) + (.SubMatches(1) / 1440) + (.SubMatches(2) / 86400) ENDWITH SELEND RESULT = time FEND
結果
09:24:43

Tempフォルダのパスを取得

CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) PRINT Folder.Path
結果
D:\TMP

Tempフォルダのファイルをデスクトップにコピー

CONST ssfDesktop = 0 CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) DIM source = FSO.BuildPath(Folder.Path, "*") DIM Shell = CREATEOLEOBJ("Shell.Application") Folder = Shell.NameSpace(ssfDesktop) DIM destination = FSO.BuildPath(Folder.Self.Path, "Temp") // フォルダが存在しなければ作成 IF FSO.FolderExists(Folder.Self.Path) = FALSE THEN FSO.CreateFolder(destination) FSO.CopyFile(source, destination)

Tempフォルダのファイルをデスクトップに移動

CONST ssfDesktop = 0 CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) DIM source = FSO.BuildPath(Folder.Path, "*") DIM Shell = CREATEOLEOBJ("Shell.Application") Folder = Shell.NameSpace(ssfDesktop) DIM destination = FSO.BuildPath(Folder.Self.Path, "Temp") // フォルダが存在しなければ作成 IF FSO.FolderExists(Folder.Self.Path) = FALSE THEN FSO.CreateFolder(destination) FSO.MoveFile(source, destination)

Tempフォルダのフォルダをデスクトップに移動

CONST ssfDesktop = 0 CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) DIM source = FSO.BuildPath(Folder.Path, "NewFolder") DIM Shell = CREATEOLEOBJ("Shell.Application") Folder = Shell.NameSpace(ssfDesktop) DIM path = Folder.Self.Path DIM destination = path + IIF(COPY(path, LENGTH(path)) = "\", "", "\") FSO.MoveFolder(source, destination) ////////////////////////////////////////////////// // 【引数】 // expr : 評価する式 // truepart : 評価した式がTrueのときに返す値 // falsepart : 評価した式がFalseのときに返す値 // 【戻値】 // truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき ////////////////////////////////////////////////// FUNCTION IIF(expr, truepart, falsepart) IFB VAL(expr) THEN RESULT = truepart ELSE RESULT = falsepart ENDIF FEND

フォルダ内の情報を表示

CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) WITH Folder PRINT "名前<#TAB><#TAB>" + .Name PRINT "親フォルダパス<#TAB>" + .ParentFolder.Path PRINT "パス<#TAB><#TAB>" + .Path PRINT "短い名前<#TAB>" + .ShortName PRINT "短いパス<#TAB>" + .ShortPath ENDWITH
結果
名前		TMP
親フォルダパス	D:\
パス		D:\TMP
短い名前	TMP
短いパス	D:\TMP

Tempフォルダのフォルダをデスクトップにコピー

CONST ssfDesktop = 0 CONST TemporaryFolder = 2 DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM Folder = FSO.GetSpecialFolder(TemporaryFolder) DIM source = FSO.BuildPath(Folder.Path, "NewFolder") DIM Shell = CREATEOLEOBJ("Shell.Application") Folder = Shell.NameSpace(ssfDesktop) DIM path = Folder.Self.Path DIM destination = path + IIF(COPY(path, LENGTH(path)) = "\", "", "\") FSO.CopyFolder(source, destination) ////////////////////////////////////////////////// // 【引数】 // expr : 評価する式 // truepart : 評価した式がTrueのときに返す値 // falsepart : 評価した式がFalseのときに返す値 // 【戻値】 // truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき ////////////////////////////////////////////////// FUNCTION IIF(expr, truepart, falsepart) IFB VAL(expr) THEN RESULT = truepart ELSE RESULT = falsepart ENDIF FEND

指定したファイルのベース名を返す

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") PRINT FSO.GetBaseName("D:\Documents\debug.log")
結果
debug

環境センサーから位置情報を取得し、Googleマップで表示

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE DIM latitude = SENSOR(SNSR_Location_Latitude) DIM longitude = SENSOR(SNSR_Location_Longitude) IE.Navigate("https://www.google.co.jp/maps/@" + latitude + "," + longitude + ",15z?hl=ja") BusyWait(IE) // 終了する // IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND

インストールされている.NET Frameworkのバージョンを確認する

DIM WshShell = CREATEOLEOBJ("WScript.Shell") DIM n = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release") SELECT TRUE CASE n >= 528040 PRINT "4.8" CASE n >= 461808 PRINT "4.7.2" CASE n >= 461308 PRINT "4.7.1" CASE n >= 460798 PRINT "4.7" CASE n >= 394802 PRINT "4.6.2" CASE n >= 394254 PRINT "4.6.1" CASE n >= 393295 PRINT "4.6" CASE n >= 379893 PRINT "4.5.2" CASE n >= 378675 PRINT "4.5.1" CASE n >= 378389 PRINT "4.5" SELEND

楽天銀行定期預金の金利をExcelに保存

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://rbweb.rakuten-bank.co.jp/REF/main/fis/BasicTimeDepositInterestRate.html?PageID=BasicTimeDepositInterestRatePresentationLogicBean") BusyWait(IE) DIM elements = IE.document.getElementsByTagName("table") DIM element = elements.Item(0) DIM arr[-1][-1] getTableData(element, arr) IE.Quit DIM Excel = XLOPEN() XLSETDATA(Excel, arr, "A1") DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM path = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "楽天銀行定期預金金利.xlsx")) XLCLOSE(Excel, path) ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND ////////////////////////////////////////////////// // 【引数】 // table : tableエレメント // arr : 取得したデータを格納する配列(参照引数) // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE getTableData(table, Var arr[][]) // 何行何列のテーブルか求める rowMax = table.rows.length - 1 colMax = 0 FOR row = 0 TO table.rows.length - 1 IFB table.rows(row).cells.length - 1 > colMax THEN colMax = table.rows(row).cells.length - 1 ENDIF NEXT // テーブルの値を格納するための2次元配列を作成 DIM arr[rowMax][colMax] // テーブルの値を格納 FOR row = 0 TO table.rows.length - 1 FOR col = 0 TO table.rows(row).cells.length - 1 n = 0 WHILE arr[row][col + n] <> "" n = n + 1 WEND arr[row][col + n] = table.rows(row).cells(col).innerText // rowSpan(行結合)とcolSpan(列結合)の両方があれば IFB table.rows(row).cells(col).rowSpan > 1 AND table.rows(row).cells(col).colSpan > 1 THEN rmax = table.rows(row).cells(col).rowSpan - 1 cmax = table.rows(row).cells(col).colSpan - 1 FOR r = 1 TO rmax FOR c = 1 TO cmax arr[row + r][col + c] = "←" NEXT NEXT ENDIF // rowSpan(行結合)があれば結合セルに「↑」を代入 IFB table.rows(row).cells(col).rowSpan > 1 THEN n = table.rows(row).cells(col).rowSpan - 1 WHILE n arr[row + n][col] = "↑" n = n - 1 WEND ENDIF // colSpan(列結合)があれば結合セルに「←」を代入 IFB table.rows(row).cells(col).colSpan > 1 THEN n = table.rows(row).cells(col).colSpan - 1 WHILE n arr[row][col + n] = "←" n = n - 1 WEND ENDIF NEXT NEXT FEND ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN fol = FSO.GetParentFolderName(path) filename = FSO.GetBaseName(path) extension = FSO.GetExtensionName(path) i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND

楽天PointClubでランクと保有ポイント数を取得する

DIM IE = CREATEOLEOBJ("InternetExplorer.Application") IE.Visible = TRUE IE.Navigate("https://point.rakuten.co.jp/") BusyWait(IE) DIM elements // ログインする elements = IE.document.getElementsByClassName("name") IFB elements.length = 0 THEN IELINK(IE, "ログイン") BusyWait(IE) IESETDATA(IE, READINI("楽天", "ID", "楽天.INI"), "u") // ユーザID IESETDATA(IE, READINI("楽天", "PASS", "楽天.INI"), "p") // パスワード IESETDATA(IE, TRUE, "submit") // ログイン BusyWait(IE) ENDIF // ランク elements = IE.document.getElementsByClassName("rank") elements = elements.Item(0).getElementsByTagName("em") PRINT elements.Item(0).innerText // ポイント elements = IE.document.getElementsByClassName("point-total") elements = elements.Item(0).getElementsByTagName("dd") PRINT elements.Item(0).innerText IE.Quit ////////////////////////////////////////////////// // 【引数】 // IE : IEオブジェクト // 【戻値】 // ////////////////////////////////////////////////// PROCEDURE BusyWait(IE) TRY SLEEP(0.500) REPEAT SLEEP(0.010) UNTIL !IE.Busy AND IE.readyState = 4 EXCEPT SLEEP(5.000) ENDTRY FEND
あなたは ゴールド会員 です
総保有ポイント
559
[楽天] ID=info@example.com PASS=***
結果
ゴールド会員
559

すべてのウィンドウを最小化

DIM Shell = CREATEOLEOBJ("Shell.Application") Shell.MinimizeAll

選択したフォルダのパスを取得

CONST ssfDesktop = 0 DIM Shell = CREATEOLEOBJ("Shell.Application") DIM Folder = Shell.BrowseForFolder(0, "フォルダを選択してください。", 0, ssfDesktop) PRINT Folder.Self.Path

指定されたサービスを開始および停止できるかどうかを返す

DIM Shell = CREATEOLEOBJ("Shell.Application") DIM arr = SPLIT(DOSCMD("sc query state=all | findstr /i service_name"), "<#CR>") arr = strReplace("SERVICE_NAME: ", "", arr) FOR n = 0 TO UBound(arr) PRINT arr[n] + "<#TAB>" + Shell.CanStartStopService(arr[n]) NEXT ////////////////////////////////////////////////// // 【引数】 // search : 探したい値 // replace : 見つかった search を置き換える値 // subject : 検索・置換の対象となる文字列あるいは配列 // 【戻値】 // 置換後の文字列あるいは配列 ////////////////////////////////////////////////// FUNCTION strReplace(search, replace, subject) SELECT VARTYPE(subject) AND $2000 CASE $2000 // 配列 FOR n = 0 TO UBound(subject) subject[n] = REPLACE(subject[n], search, replace) NEXT RESULT = SLICE(subject) DEFAULT // 配列以外 RESULT = REPLACE(subject, search, replace) SELEND FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND
結果
AdobeARMservice	False
AJRouter	False
ALG	False
ALUpdateService	False
AppHostSvc	False
AppIDSvc	False
Appinfo	False
AppReadiness	False
AppXSvc	False
aspnet_state	False
AudioEndpointBuilder	False
Audiosrv	False
autotimesvc	False
AxInstSV	False
BDESVC	False
BFE	False
BITS	False
BrokerInfrastructure	False
BTAGService	False
BthAvctpSvc	False
bthserv	False
camsvc	False
CDPSvc	False
CertPropSvc	False
CLHNService	False
ClipSVC	False
COMSysApp	False
CoreMessagingRegistrar	False
cphs	False
CryptSvc	False
CypherGuard cguard Service 32bit Edition	False
CypherGuard cguard Service 64bit Edition	False
CypherGuard Info Service	False
dbupdate	False
dbupdatem	False
DbxSvc	False
DcomLaunch	False
defragsvc	False
DeviceAssociationService	False
DeviceInstall	False
DevQueryBroker	False
Dhcp	False
diagnosticshub.standardcollector.service	False
diagsvc	False
DiagTrack	False
DispBrokerDesktopSvc	False
DisplayEnhancementService	False
DmEnrollmentSvc	False
dmwappushservice	False
Dnscache	False
DoSvc	False
dot3svc	False
DPS	False
DsmSvc	False
DsSvc	False
DusmSvc	False
Eaphost	False
EFS	False
embeddedmode	False
EntAppSvc	False
EventLog	False
EventSystem	False
Everything	False
Fax	False
fdPHost	False
FDResPub	False
fhsvc	False
FontCache	False
FontCache3.0.0.0	False
FrameServer	False
Freemake Improver	False
FreemakeVideoCapture	False
GoogleChromeElevationService	False
GoogleIMEJaCacheService	False
gpsvc	False
GraphicsPerfSvc	False
gupdate	False
gupdatem	False
hidserv	False
HvHost	False
icssvc	False
IDriverT	False
IKEEXT	False
ImeDictUpdateService	False
InstallService	False
iphlpsvc	False
IpxlatCfgSvc	False
KeyIso	False
KtmRm	False
LanmanServer	False
LanmanWorkstation	False
lfsvc	False
LicenseManager	False
LLHDClient	False
LLHDCloader	False
lltdsvc	False
lmhosts	False
LMS	False
LSM	False
LxpSvc	False
MapsBroker	False
MixedRealityOpenXRSvc	False
MozillaMaintenance	False
mpssvc	False
MSDTC	False
MSiSCSI	False
msiserver	False
MSMQ	False
MSSQL$SQLEXPRESS	False
MSSQLServerADHelper100	False
NaturalAuthentication	False
NcaSvc	False
NcbService	False
NcdAutoSetup	False
Netlogon	False
Netman	False
NetMsmqActivator	False
NetPipeActivator	False
netprofm	False
NetSetupSvc	False
NetTcpActivator	False
NetTcpPortSharing	False
NgcCtnrSvc	False
NgcSvc	False
NielsenUpdate	True
NlaSvc	False
nsi	False
nurago InstallUpdate	False
nurago NetworkMeter	False
nurago Reporting Service	False
ose64	False
osppsvc	False
p2pimsvc	False
p2psvc	False
PBExtractService	False
PcaSvc	False
perceptionsimulation	False
PerfHost	False
PhoneSvc	False
pla	False
PlugPlay	False
PNRPAutoReg	False
PNRPsvc	False
PolicyAgent	False
Power	False
PrintNotify	False
ProfSvc	False
PushToInstall	False
QWAVE	False
RasAuto	False
RasMan	False
RemoteAccess	False
RemoteRegistry	False
RetailDemo	False
RmSvc	False
RpcEptMapper	False
RpcLocator	False
RpcSs	False
SamSs	False
SCardSvr	False
ScDeviceEnum	False
Schedule	False
SCPolicySvc	False
SDRSVC	False
seclogon	False
SecurityHealthService	False
SEMgrSvc	False
SENS	False
SensorDataService	False
SensorService	False
SensrSvc	False
SessionEnv	False
SgrmBroker	False
SharedAccess	False
SharedRealitySvc	False
ShellHWDetection	False
shpamsvc	False
smphost	False
SmsRouter	False
SNMPTRAP	False
spectrum	False
Spooler	False
sppsvc	False
SQLAgent$SQLEXPRESS	False
SQLBrowser	False
SQLWriter	False
SSDPSRV	False
ssh-agent	False
SstpSvc	False
StateRepository	False
stisvc	False
StorSvc	False
svsvc	False
swprv	False
SynTPEnhService	False
SysMain	False
SystemEventsBroker	False
SystemExplorerHelpService	False
TabletInputService	False
TapiSrv	False
TeamViewer	False
TermService	False
Themes	False
TieringEngineService	False
TimeBrokerSvc	False
TMachInfo	False
TODDSrv	False
TokenBroker	False
TosCoSrv	False
TOSHIBA eco Utility Service	False
TOSHIBA HDD SSD Alert Service	False
TosRzTfSvc	False
TPCHKarteSVC	False
TPCHSrv	False
TrkWks	False
TroubleshootingSvc	False
TrustedInstaller	False
tzautoupdate	False
UmRdpService	False
UNS	False
upnphost	False
UserManager	False
UsoSvc	False
VacSvc	False
VaultSvc	False
vds	False
vmicguestinterface	False
vmicheartbeat	False
vmickvpexchange	False
vmicrdv	False
vmicshutdown	False
vmictimesync	False
vmicvmsession	False
vmicvss	False
VSS	False
VSStandardCollectorService150	False
W32Time	False
w3logsvc	False
W3SVC	False
WaaSMedicSvc	False
WalletService	False
WarpJITSvc	False
WAS	False
wbengine	False
WbioSrvc	False
Wcmsvc	False
wcncsvc	False
WdiServiceHost	False
WdiSystemHost	False
WdNisSvc	False
WebClient	False
Wecsvc	False
WEPHOSTSVC	False
wercplsupport	False
WerSvc	False
WFDSConMgrSvc	False
WiaRpc	False
WinDefend	False
WinHttpAutoProxySvc	False
Winmgmt	False
WinRM	False
wisvc	False
WlanSvc	False
wlidsvc	False
wlpasvc	False
WManSvc	False
wmiApSrv	False
WMPNetworkSvc	False
workfolderssvc	False
WpcMonSvc	False
WPDBusEnum	False
WpnService	False
wscsvc	False
WSearch	False
wuauserv	False
WwanSvc	False
XblAuthManager	False
XblGameSave	False
XboxGipSvc	False
XboxNetApiSvc	False
AarSvc_64da0	False
BcastDVRUserService_64da0	False
BluetoothUserService_64da0	False
CaptureService_64da0	False
cbdhsvc_64da0	False
CDPUserSvc_64da0	False
ConsentUxUserSvc_64da0	False
CredentialEnrollmentManagerUserSvc_64da0	False
DeviceAssociationBrokerSvc_64da0	False
DevicePickerUserSvc_64da0	False
DevicesFlowUserSvc_64da0	False
MessagingService_64da0	False
OneSyncSvc_64da0	False
PimIndexMaintenanceSvc_64da0	False
PrintWorkflowUserSvc_64da0	False
UnistoreSvc_64da0	False
UserDataSvc_64da0	False
WpnUserService_64da0	False

この記事は役に立ちましたか?
役に立った 役に立たなかった