如何改更计算机的时间(通过代码来写)
例子,在一个输入框中输入现在想修改的时间,然后点击修改按钮,就把当前的计算机时间改为输入框中的时间.

解决方案 »

  1.   

    var
      systime: TSystemTime;
    begin
      systime.wyear := ...;
      systime.wmonth := ...;
      systime.wday := ...;
        ....
      setsystemtime(systime);
    end;
      

  2.   

    以上代码对 NT内核 的系统无效。需要先改变进程权限。提供一个简单办法。建立一个BAT文件, 写入内容
    TIME xx:xx:xx
    然后运行它。
      

  3.   

    用Win32 API: SetLocalTime()
      

  4.   

    var
    str: string;
    begin
    str := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
    if SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE , PChar(str)) then
    begin
    showmessage('short OK!');
    then
    SendMessageA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
    end;
    end;
    为了方便测试我用了radioGroup,items 内容如下
    yy-d-m
    d-yy-m
    m-d-yy
    yy-m-d
    yyyy-m-d
    yyyy-d-m
    传进参数必须 null-terminate 字符串指针。我用 pchar ,而且字符串格式只能写成这样 'm-d'而不是'mm-dd'('yyyy'可以用),不然改不了另外delphi 函数 DateTostr,DateTimeTostr,都调用短格式。
    长格式很灵活。随便改.RadioGroup Items 如下
    yyy'年'dd'日'-mm
    d-yyyy-mm
    mm-dd-yyyy
    yyyy-mm-dd代码如下var
    str: string;
    begin
    str := RadioGroup2.Items.Strings[RadioGroup2.ItemIndex]; 
    if SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE , PChar(str)) then
    begin
    showmessage('Loan OK!');
    SendMessageA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
    end;
    end;
    //
    你应该搜索一下,有着方面的讨论。
      

  5.   

    DatetimeToSystemtime(dm.check.Fields[0].Value,systemtime);
      SetLocalTime(systemtime);
    使用API函数