为什么我编译的EXE文件运行时会产生一个EXET文件?[已大致解决]
本帖最后由 不是小灵通 于 2015-6-12 09:59 编辑如图
我用AU3,v3.3.9.0 (beta)编写的程序,用其“工具”--“编译脚本”编译出来的EXE文件,在运行的时候会产生一个EXET文件?
而且,好像有的文件在每次运行后,EXE文件的MD5也相应发生了变化,文件修改时间好像也变为当前的了
还有没有可推荐的编译工具,能让EXE文件稳定点?
估计是不是因为生成的时候360没关,或其他暂时未知情况,而影响了exe文件结构造成不稳定。从字面意义上猜测理解为EXE的temp文件
算法和命令基本没变,但结果不同,不可预计
本案例的详细程序在6楼,经编译没发现上述情况。
网上百度exet文件,大部分均以病毒解释,无进一步描述
——鉴于此情况不能预期发生,表示不再深究了,以后发现根源再行理论。
本帖暂时结贴。
楼主启 一个字:上代码 这倒没碰到过。 从来没遇到过 没有代码无法判断 本帖最后由 不是小灵通 于 2015-6-11 13:37 编辑
奇了怪了又不生成exet文件了,程序基本没什么改变。我已经发现好多次了。。。
【软件说明】
计算机实验室内,学生上课后大摇大摆的就走了,然后计算机也不关,或者关掉显示器以为电脑就关了。。。汗!
所以弄了个定时关机的程序
程序每到00,10...50分的时候,会自动从FTP里面下载(覆盖本地)一个配置文件(TIME.INI),读取里面设置好的时间点。下课时间配置文件可我们随时进行修改,并在下一个10分钟到来时更新至本地机,这样方便管理。
说明:以下提示的精度在正负1分钟
>>当到达下课前5分钟,会提示交作业
>>下课时间点,提示下课了,带走垃圾
>>下课后5分钟,提示将自动关机,并可以选择取消,继续使用
===》热键F10:可显示当前已读取的时间点
===》热键F11:测试版输入密码1可以退出本程序
文件打包下载:
代码如下:#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Icon=G:\au3\energysaving(1).ico
#PRE_Outfile=Green(x86).exe
#PRE_Outfile_x64=Green(x64).exe
#PRE_Compile_Both=y
#PRE_UseX64=y
#PRE_Res_Comment=计算机实验室定时关机程序
#PRE_Res_Description=计算机实验室定时关机程序
#PRE_Res_Fileversion=2.0.0.0
#PRE_Res_LegalCopyright=Copyright 2015 by Computer Lab
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
;计算机实验室定时关机程序V2.0
;2015.4.28
;注意执行文件名为:Green.exe
;V2.0.0.0从FTP中读取TIME.INI配置文件至本地机,产生动作
;读取txt指定时间点
#include <Date.au3>
#include <Timers.au3>
#include <FTPEx.au3>
#include <Array.au3>
Opt("TrayMenuMode", 3) ; 默认菜单项目 (脚本暂停中/退出)(Script Paused/Exit) 将不会显示,并且所选项目不能被选中(checkbox不会打勾) . 请参考TrayMenuMode选项1和2(3=1+2).
;声明全局、局部变量
Global $Time;$T记录读取进来的时间段,共可容纳(0-9)10个,
Global $Timeticks;=;$Time换算成-5,0,+5分钟的时间码,如:
Global $l;didi频率参数
Global $pwd ="1";默认退出密码
Global $Ver="(V2.0.0.0 中文版2015.05.28)";当前版本号
Global $IPAddress="192.168.180.8"
Global $FTP_Port=21;FTP端口号
Global $FTP_User="work"
Global $FTP_PW=""
HotKeySet("{F11}", "Endend");F11,程序退出热键
HotKeySet("{F10}", "TimeINI");F10,显示已获取的时间点
MsgBox(0,"人性化节约用电软件"&$Ver,"现在时刻:" & @HOUR &":"& @MIN & @CRLF & @CRLF &"计算机实验室欢迎大家前来学习,我们将与全校师生共创节约型校园!" & @CRLF & @CRLF & " >> Copyright 2015 by Computer Lab <<",10)
;~ FileDelete ( "TIME.INI" );删除本地已存在的旧INI文件【——测试版此语句不需工作】
;建议大循环由此开始,以便中途通过推送TIME.INI完成时间点重置
While 1
;【注意:测试版不需从服务器获取INI文件,注意同文件夹需有TIME.INI文件存在。实际运行版,下面5句生效,10分钟获取一次最新的INI配置】
;~ ;每当10分的时候(即00,10,20...50分钟时),获取一次INI文件
;~ Local $m=@MIN/10
;~ If $m=Int(@MIN/10) Then
;~ getini()
;~ EndIf
;读取INI设定时间至数组
Global $i=0,$j=0;循环变量,最多可以读取10行(10个时间点,0-9)
Global $k=-1;判断time.ini有多少行有效数据
;将ini内设时间点读入数组:$time
For $i=0 To 9
$j="TIME_" & ($i+1)
$Time[$i]=IniRead("TIME.INI",$j,"Time","");读TIME.INI文件的指定关键字的值(time=值)
;对于有效数据,进行筛选、转换并放入数组
If $Time[$i]<>"" Then ;判断条件暂定为:非空值
$k=$k+1
;将TIME.INI文件中指定的有效时间,转换为时间戳,然后分别写入二维数组存放(带-5,0,+5分钟,[即参数修正为-3,0,+3]提醒,精确度±1分钟)
;本版本设计最多支持10个时间点.
Timeticks($k)
EndIf
Next
$i=0
; 获取当前系统时间,并转换为时间码
Local $NowTicks = Round(_TimeToTicks(@HOUR, @MIN, @SEC)/100000,0)
;将系统当前时间与制定时间点进行比较,并分别作出不同动作
For $i = 0 To $k
Switch $NowTicks
;距下课5分钟提醒
Case $NowTicks=$Timeticks[$i]
didi(3)
MsgBox(4096, "计算机实验室提示信息", "现在时刻:" & @HOUR & "点" & @MIN & "分" & @CRLF & @CRLF & "还有几分钟就要下课了,请尽快完成并提交作业" & @CRLF & @CRLF &"无需惊慌,人性化的程序不会关闭正在使用的电脑^_^",30)
Sleep(50000);延迟50秒
;下课提醒
Case $NowTicks=$Timeticks[$i]
didi(5)
MsgBox(4096, "计算机实验室提示信息", "现在时刻:" & @HOUR & "点" & @MIN & "分" & @CRLF & @CRLF & "即将下课,请清理好自己的随身物品,带走垃圾,谢谢合作!",30)
Sleep(50000);延迟50秒
;下课后5分钟关机提醒
Case $NowTicks=$Timeticks[$i]
didi(8)
If MsgBox(262145, "计算机实验室提示信息", "现在时刻:" & @HOUR & "点" & @MIN & "分" & @CRLF & @CRLF & "响应“创建节约型校园”号召,本电脑将于2分钟后自动关闭..." & @CRLF & "此时点击“取消”可继续使用...", 60) =2 Then
MsgBox(262144, "取消关机", "本次关机操作已成功取消!",15)
Else
If MsgBox(262145, "关机前确认", "真的要关机吗?若本机依然无人干预,将于60秒后自动关闭..."& @CRLF & @CRLF &"此时点击“取消”仍可继续使用...", 60) =2 Then
MsgBox(262144, "取消关机", "本次关机操作已成功取消!",15)
Else
MsgBox(262144, "已确定关闭该电脑", "电脑将于10秒后被关闭,谢谢使用!",10)
Shutdown(13)
EndIf
EndIf
Sleep(50000);延迟50秒
EndSwitch
Next
WEnd
;热键F11,输入密码退出
Func Endend()
Local $passwd = InputBox("程序退出", "请10秒内输入退出密码,测试版密码为:1", "", "*",400,120,default,default,10)
If $passwd=$pwd Then
;结束程序
MsgBox(4096, "程序退出", "定时关机程序" & $Ver & "将于3秒后结束...",3)
Exit
EndIf
EndFunc
Func getini()
; 尝试从FTP(work)获取time.ini复制至本地【测试版不会被调用运行】
Do
$FTP_Open = _FTP_Open("MY_FTP");创建一个FTP会话
$FTP_Connect =_FTP_Connect($FTP_Open,$IPAddress, $FTP_User, $FTP_PW,$FTP_Port)
Local $File_found=_FTP_FileGet($FTP_Connect, "TIME.INI", "TIME.INI");默认false,覆盖(刷新)时间点INI文件
_FTP_Close($FTP_Open)
Local $file = FileExists ("TIME.INI");检测文件存在否
Sleep(30000);延迟30秒再次尝试打开文件
Until $file =1;直到文件被读取到,否则在此循环
EndFunc
Func Timeticks($k)
$Timeticks[$k]=Round(_TimeToTicks(StringLeft($Time[$i],2),StringRight($Time[$i],2),0)/100000,0)-3;将读取的行数据,取左2、右2字节,并将其换算成为时间码[-5,0,+5分钟],下同
$Timeticks[$k]=Round(_TimeToTicks(StringLeft($Time[$i],2),StringRight($Time[$i],2),0)/100000,0)
$Timeticks[$k]=Round(_TimeToTicks(StringLeft($Time[$i],2),StringRight($Time[$i],2),0)/100000,0)+3
EndFunc
Func didi($l)
Beep(100*$l, 500)
Beep(0,10)
Beep(100*$l, 200)
Beep(0,10)
EndFunc
;热键F10,列表显示当前读取的时间点
Func TimeINI()
_ArrayDisplay($Time,"下课时间点如下:")
EndFunc 回复 2# ila
两个字:在6楼 回复 3# bhffhzh
奇怪了今天重新编译又不出现此现象了,程序源码详见6楼 回复 5# h20040606
今天又不出现了。。。代码在6楼 回复 3# bhffhzh
我遇过几次了,还不止这一个程序 刚才试了你的代码,我这里没出现你说的现象
计算机实验室内,学生上课后大摇大摆的就走了,然后计算机也不关,或者关掉显示器以为电脑就关了。。。汗!
不是有专门的管理软件嘛,哪需要他们关。服务端一点,全关机了。 回复 12# bhffhzh
是有,而且我还装了深蓝软件,但是机房太大了,120+吧,一层楼400多机器,目前只2个老师负责管理,有时候一个班还没走,另一个班的人就已经进来了
以前还弄了个15分钟不动鼠标键盘就关机的程序,结果证明在上课的时候,老师用屏幕广播讲课,学生的键鼠也不动,也会关机动作。不过当时是测试版,只出现msgbox而不正真关机 回复 11# bhffhzh
是的,我昨天试的时候也不出现了,也基本没改什么算法和使用什么特殊的命令,但此前出现过多次,而且在两个家里和办公室都遇到过,奇了怪了。不知道会不会是编译工具不稳定 怀疑是编外的问题如病毒,
代码复制到干净的机器上运行试试了。
页:
[1]
2