yelangpp 发表于 2009-6-22 12:36:04

怎样修改系统日期?

本帖最后由 yelangpp 于 2009-7-5 00:23 编辑

  如题,用Autoit如何修改系统日期?
  遇一软件,未能完全破解,每次使用时,需将系统日期修改到以前,
想用Autoit写个自动运行,先修改系统日期提前,再运行软件,关闭软件
后,再将系统日期修改到现在。

zjx0111 发表于 2009-6-22 12:49:33

帮助里面有

bob 发表于 2009-6-22 13:38:25

日期管理的UDF,可以修改系统时间
#include <Date.au3>

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

autoit3CN 发表于 2009-6-22 14:21:47

日期管理的UDF,可以修改系统时间
#include

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

好创意!!!

yelangpp 发表于 2009-6-22 22:46:28

谢谢,看了帮助,应该不是很方便,如果是现成的函数就好了。

netegg 发表于 2009-6-22 22:50:32

LZ,如果你这么想就用不着编什么程序了,去找现成的破解程序吧

lynfr8 发表于 2009-6-22 22:51:04

谢谢,看了帮助,应该不是很方便,如果是现成的函数就好了。
yelangpp 发表于 2009-6-22 22:46 http://www.autoitx.com/images/common/back.gif
_Date_Time_SetSystemTime
请问你还想怎样的现成的?

都市浪子666 发表于 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 /cdate "&$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 /cdate "&$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 /cdate "&$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    ; ;      检测是不是重复运行程序

都市浪子666 发表于 2009-6-23 13:52:13

帮助里面有
zjx0111 发表于 2009-6-22 12:49 http://www.autoitx.com/images/common/back.gif


这位兄弟,回答得比较的牛B
一句话搞搞定,让别人从帮助里面找,该如何找,怎么找呀,找什么,至少也给点提示什么的

lynfr8 发表于 2009-6-23 17:41:44




这位兄弟,回答得比较的牛B
一句话搞搞定,让别人从帮助里面找,该如何找,怎么找呀,找什么,至少也给点提示什么的
都市浪子666 发表于 2009-6-23 13:52 http://www.autoitx.com/images/common/back.gif

关于回帖‘看帮助文件’的问题这里已经提过了
http://www.autoitx.com/forum.php?mod=viewthread&tid=7088&extra=page%3D1
每个人都有回帖的自由,但是要注意自由也是有一定范围的

yelangpp 发表于 2009-6-23 23:28:29

谢谢大家积极帮忙,学习不少!

pizigao 发表于 2010-9-27 22:50:03

参考相关内容

shuangsexing 发表于 2012-1-6 19:58:25

不错,学习了。。。。

凡之雪 发表于 2017-8-17 01:08:59

学习了。。。。
页: [1]
查看完整版本: 怎样修改系统日期?