找回密码
 加入
搜索
查看: 8878|回复: 13

怎样修改系统日期?

[复制链接]
发表于 2009-6-22 12:36:04 | 显示全部楼层 |阅读模式
本帖最后由 yelangpp 于 2009-7-5 00:23 编辑

  如题,用Autoit如何修改系统日期?
  遇一软件,未能完全破解,每次使用时,需将系统日期修改到以前,
想用Autoit写个自动运行,先修改系统日期提前,再运行软件,关闭软件
后,再将系统日期修改到现在。
发表于 2009-6-22 12:49:33 | 显示全部楼层
帮助里面有
发表于 2009-6-22 13:38:25 | 显示全部楼层
日期管理的UDF,可以修改系统时间
#include <Date.au3>

要达到你要求也很简单,做个循环监控,如果软件窗体关闭,就把时间更改回来并退出即可

评分

参与人数 1金钱 +5 收起 理由
autoit3CN + 5 原创内容,感谢你对论坛的支持;希望继续发 ...

查看全部评分

发表于 2009-6-22 14:21:47 | 显示全部楼层
日期管理的UDF,可以修改系统时间
#include

要达到你要求也很简单,做个循环监控,如果软件窗体关闭,就把时间更改回来并退出即可
bob 发表于 2009-6-22 13:38


好创意!!!
 楼主| 发表于 2009-6-22 22:46:28 | 显示全部楼层
谢谢,看了帮助,应该不是很方便,如果是现成的函数就好了。
发表于 2009-6-22 22:50:32 | 显示全部楼层
LZ,如果你这么想就用不着编什么程序了,去找现成的破解程序吧
发表于 2009-6-22 22:51:04 | 显示全部楼层
谢谢,看了帮助,应该不是很方便,如果是现成的函数就好了。
yelangpp 发表于 2009-6-22 22:46

_Date_Time_SetSystemTime
请问你还想怎样的现成的?
发表于 2009-6-23 12:59:22 | 显示全部楼层
本帖最后由 都市浪子666 于 2009-6-23 13:16 编辑

我有个,情况正和楼主的情况是一样的,使用软件前要把日期修改

偶E文很烂,看不懂那个日期的函数,
偶也是初学AU3,偶写的的代码也是非常的烂
#NoTrayIcon
#include <Date.au3>

dim $es_path
dim $date_YY,$date_mm,$date_dd

call ("chong_fu")   ;检测是不是重复运行程序

CALL("GET_PATH")  ; 取得DECO的安装目录 如果没有,就退出


call("jin_che") ;检测是不是有启动W和田岛的软件


call("run_soft")  ; 运行软件

call ("out_deco")  ; 这个是退出的函数,接着会更正时间




Func GET_PATH () ; 取得DECO的安装目录
        
        $es_path="\bin"
        For $i_DECO= 1 to 100
           $reg_deco = RegEnumKey("HKEY_CURRENT_USER\Software\Wilcom\Embroidery Studio", $i_DECO)
          If @error <> 0 then ExitLoop
                  ;MsgBox(4096, "SubKey #" & $i_DECO & " under HKLM\Software: ", $reg_deco)
                  $PATH_DECO=RegRead("HKEY_CURRENT_USER\Software\Wilcom\Embroidery Studio"&$reg_deco,"Location")
               IF @error=0 Then
                       
                    $es_path=$PATH_DECO&"\bin"
                                ;MsgBox(0,$reg_deco&"-----"&$i_DECO,$PATH_DECO)
                           ; MsgBox(0,"",$es_path)
                        EndIf        
        Next 
           
                if $es_path="\bin" Then
                  MsgBox(0+32,"错误","貌似没有安装DecoStudio"&@CRLF&@CRLF&"如有什么问题请联系   XXX",10)
                   Exit
           EndIf


EndFunc   ; ********************** 取得DECO的安装目录



Func run_soft ()    ; 运行软件
;$date_YY=@YEAR    ;是年
;$date_mm=@MON      ;是月
;$date_dd=@MDAY     ;是天
IniWrite(@TempDir&"\date.ini","日期","年",@YEAR)
IniWrite(@TempDir&"\date.ini","日期","月",@MON)
IniWrite(@TempDir&"\date.ini","日期","日",@MDAY)
$date_YY=IniRead(@TempDir&"\date.ini","日期","年","")
$date_mm=IniRead(@TempDir&"\date.ini","日期","月","")
$date_dd=IniRead(@TempDir&"\date.ini","日期","日","")


run('cmD /c date 2009-2-1',"",@SW_HIDE) ; 这里是修改日期,也可以改成别的,
; 但最后一定要是1号 例如改成  'cmD /c date 2008-5-1'   
; 年和月的数字随便改, 但日这个数字一定要是1 如果不是1。那修改的日期会不对

RUN('"'&$es_path&'DESLOADR.EXE"  "'&$es_path&'DecoStudio.EXE"  ES "21,25"',"")   ;运行软件

ToolTip("正在启动DecoStudio,请稍等"&@CRLF _
                &"现已把日期修改成2009-2-1,等DecoStudio结束后"&@crlf _
                &"程序会自动更正日期       BY都市浪子",@DesktopWidth-250,@DesktopHeight-100,"","",1+4)

Sleep(14000)
ToolTip("","","")
EndFunc    ;====================== ; 运行软件  ======================





Func out_deco ()    ;  退出的函数
Do
        
        Sleep(3000)
        $ProcessExi=1
        if ProcessExists("DecoStudio.EXE")=False Then
                  ; 这里是没有DecoStudio.EXE进程才到这里的
                 if ProcessExists("DESLOADR.EXE")=False Then
                       ; 这里是没有DESLOADR.EXE 和 DecoStudio.EXE进程才到这里的  
                                   ; 困为我所用的软件是有运行2个进程,所以要检测2个进程
                              ;MsgBox(0,"","cmd /c date "&$date_YY&"-"&$date_mm&"-"&$date_dd)
                            
                              if @MDAY=1 Then
                                          run("cmd /c  date "&$date_YY&"-"&$date_mm&"-"&$date_dd,"",@SW_HIDE)
                                          FileDelete(@TempDir&"\date.ini")
                                  Else
                                          ; 到这里的话,就是日期最少过了一天,要修正日期
                                          IniWrite(@TempDir&"\date.ini","日期","天数",@MDAY-1)
                                          call ("date_ren")  ;更正日期的函数
                                  EndIf
                                  
                  Exit
                 EndIf
                 
                
EndIf
        
        
Until  $ProcessExi=2
EndFunc    ;  退出的函数




Func date_ren ()   ; 更正日期的函数
        
        RunWait("cmd /c  date "&$date_YY&"-"&$date_mm&"-"&$date_dd,"",@SW_HIDE)
        $date_tin_su=IniRead(@TempDir&"\date.ini","日期","天数","")
        $sNewDate = _DateAdd( 'd',$date_tin_su, _NowCalcDate())   ;这里是在已经有的天数上加几天
        
        $date_YY=StringLeft ($sNewDate,4)
    $date_mm=StringMid ($sNewDate,6,2)
   $date_dd=StringMid ($sNewDate,9,2)
   ;MsgBox(0,"",$sNewDate&@CRLF &$date_YY&"**"&$date_mm&"**"&$date_dd)        
        run("cmd /c  date "&$date_YY&"-"&$date_mm&"-"&$date_dd,"",@SW_HIDE)
        FileDelete(@TempDir&"\date.ini")
        
        
EndFunc ;------------------------------  更正日期的函数



Func jin_che ()
        if ProcessExists("es.exe") Then
                MsgBox(0+64,"                  错误","你已经启动了威尔克姆"&@CRLF&@CRLF&"不能再启动DecoStudio          ",10)
                Exit
        EndIf
        
        if ProcessExists("DGML.exe") Then
                MsgBox(0+64,"                  错误","你已经启动了田岛"&@CRLF&@CRLF&"不能再启动DecoStudioo          ",10)
                Exit
        EndIf
        
EndFunc

        



Func chong_fu () ;检测是不是重复运行程序
        
    RunWait('cmd /c tasklist|find /i "'&@ScriptName&'" >c:\task.txt',"c:",@SW_HIDE)
    $Line2=FileReadLine("c:\task.txt",2)
    FileDelete("c:\task.txt")
    if $Line2="" Then
            ; 到这里就是第一次运行
            ;MsgBox(0,"000","第一次运行")
        Else        
           ; 到这里就是第2次运行
          MsgBox(0+64,"     SORRY","程序已经在运行了,请不要重复运行",9)
          Exit
  EndIf 
  
EndFunc    ; ;      检测是不是重复运行程序
发表于 2009-6-23 13:52:13 | 显示全部楼层
帮助里面有
zjx0111 发表于 2009-6-22 12:49



这位兄弟,回答得比较的牛B
一句话搞搞定,让别人从帮助里面找,该如何找,怎么找呀,找什么,至少也给点提示什么的
发表于 2009-6-23 17:41:44 | 显示全部楼层
这位兄弟,回答得比较的牛B
一句话搞搞定,让别人从帮助里面找,该如何找,怎么找呀,找什么,至少也给点提示什么的
都市浪子666 发表于 2009-6-23 13:52


关于回帖‘看帮助文件’的问题这里已经提过了
http://www.autoitx.com/forum.php?mod=viewthread&tid=7088&extra=page%3D1
每个人都有回帖的自由,但是要注意自由也是有一定范围的
 楼主| 发表于 2009-6-23 23:28:29 | 显示全部楼层
谢谢大家积极帮忙,学习不少!
发表于 2010-9-27 22:50:03 | 显示全部楼层
参考相关内容
发表于 2012-1-6 19:58:25 | 显示全部楼层
不错,学习了。。。。
发表于 2017-8-17 01:08:59 | 显示全部楼层
学习了。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 19:14 , Processed in 0.080262 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表