WSHでDumpBinでDLLヘッダから日付取得 [プログラミング学習]
できた。強引だけど。
ここまで手間をかける必要があったかは微妙なラインではあるけど、ここまで手をかけたからわかったことはある、わな。
コメントと仕様は後日更新。
ここまで手間をかける必要があったかは微妙なラインではあるけど、ここまで手をかけたからわかったことはある、わな。
コメントと仕様は後日更新。
Option Explicit Dim strDLLFileName Const ForReading = 1 '読み込み Const ForWriting = 2 '書きこみ(上書きモード) Const ForAppending = 8 '書きこみ(追記モード) Const DOUBLE_QUOTE = 34 Const SPACE_CODE = 32 Const KEY_DATE = "time date stamp" strDLLFileName = WScript.Arguments(0) MsgBox "Debug:" & GetDLLDateInHeader(strDLLFileName) Private Function GetDLLDateInHeader(strDLLFileName) Dim objFSO Dim WShell Dim objExec Dim strResult Dim ExecCommand Dim strOutputFile Dim objInFile Dim strDateResult Set objFSO = CreateObject("Scripting.FileSystemObject") Set WShell = CreateObject("WScript.Shell") strDateResult = "" If objFSO.FileExists(strDLLFileName) then if objFSO.GetExtensionName(strDLLFileName) = "dll" then strOutputFile = objFSO.GetParentFolderName(WScript.ScriptFullName) & "\Temp.Txt" Set objExec = WShell.Exec("%comspec% /c " & objFSO.GetParentFolderName(WScript.ScriptFullName) & _ "\dumpbin.exe /Headers /OUT:" & _ strOutputFile & chr(SPACE_CODE) & _ chr(DOUBLE_QUOTE) & strDLLFileName & chr(DOUBLE_QUOTE)) Do Until objExec.Status = 1 WScript.Sleep(100) Loop Set objInFile = objFSO.OpenTextFile(strOutputFile, ForReading) Do Until objInFile.AtEndOfStream = true strResult = objInFile.ReadLine If Instr(strResult, KEY_DATE) > 0 Then strDateResult = Replace(Mid(strResult,9), KEY_DATE, "") End if Loop objInFile.Close End if End if GetDLLDateInHeader = strDateResult Set objExec = Nothing Set objFSO = Nothing Set objInFile = Nothing End Function |
コメント 0