suntech 发表于 2012-5-4 17:18:36

如何读取AUTOIT程序编译时间为一个变量

创建时间和修改时间 是可以修改的。。。

zldfsz 发表于 2012-5-4 18:23:02

如果编译后没被修改过,修改时间就是编译时间

ooxxgod 发表于 2012-5-4 19:46:28

楼上说正解哦

pusofalse 发表于 2012-5-4 20:21:29

本帖最后由 pusofalse 于 2012-5-4 20:25 编辑

PE文件结构中,的确有一个位置记录着编译时间,但并非绝对准确,因为很多编译器只是随便设一个值而已。对于Au3这样的脚本语言而言,编译时间是 解析器的编译时间,而非Au3程序的编译时间。

#include <PeShellX.au3>
#include <WinAPI.au3>
#include <Date.au3>

Const $PE_FILEPATH = @AutoItExe
Local $pLibrary = _WinAPI_LoadLibrary($PE_FILEPATH)

If Not _PeIsValidPE($pLibrary) Then Exit 1

Local $pNtHeader = _PeGetFileHeader($pLibrary)
Local $tNtHeader = DllStructCreate("dword Reserved;long TimeDateStamp", $pNtHeader)
Local $iTimeDateStamp = DllStructGetData($tNtHeader, "TimeDateStamp")

Local $sCompileDate = _DateAdd("s", $iTimeDateStamp, "1969/12/31 16:00:00")

MsgBox(0, "Compile Date", $sCompileDate)
_WinAPI_FreeLibrary($pLibrary)

xms77 发表于 2012-5-4 21:14:13

本帖最后由 xms77 于 2012-5-4 21:16 编辑


$CreateTime = FileGetTime(@ScriptFullPath,1,1);创建时间
$CompileTime = FileGetTime(@ScriptFullPath,0,1)
页: [1]
查看完整版本: 如何读取AUTOIT程序编译时间为一个变量