unit3.cpp

来自「本书《C++Builder与WindowsAPI经典范例》附含配套光盘包括132」· C++ 代码 · 共 72 行

CPP
72
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
//此范例可改为由网络准备时间校正现在系统时间
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//删除所有项目
ListBox1->Clear();

char *FileName = "settings";
//文件时间结果声明
FILETIME LastWriteFT, LastWriteLFT;
//系统时间结果声明
SYSTEMTIME LastWriteST;
//取得“设置”文件的handle
HANDLE setFile = ::CreateFile( FileName,
                               GENERIC_READ | GENERIC_WRITE,
                               FILE_SHARE_READ | FILE_SHARE_WRITE,
                               NULL,
                               CREATE_ALWAYS,
                               NULL,
                               NULL );

if ( setFile != INVALID_HANDLE_VALUE )
    {
    //若成功取得上次打开文件的时间
    if (::GetFileTime( setFile,  NULL, NULL, &LastWriteFT))
       {
       //若成功将上次打开文件的时间转换为区域文件时间与系统时间
       if (::FileTimeToLocalFileTime(&LastWriteFT,&LastWriteLFT))
         if(::FileTimeToSystemTime(&LastWriteLFT,&LastWriteST))
            {
            //重设系统日期
            struct date sysdate = { (int)LastWriteST.wYear,
                                    (char)LastWriteST.wDay,
                                    (char)LastWriteST.wMonth };
            setdate(&sysdate);
            //重设系统时间
            struct  time systime = { (unsigned char)LastWriteST.wMinute,/* minutes */
                                     (unsigned char)LastWriteST.wHour, /* hours */
                                     //unsigned char ti_hund, /* hundredths of seconds */
                                     //unsigned char ti_sec  /* seconds */
                                   };

            settime(&systime);
            //在ListBox1中显示修改时间
            ListBox1->Items->Add("由上次打开<设置>文件时间重新校正系统时间");
            ListBox1->Items->Add("年:" + AnsiString((int)LastWriteST.wYear));
            ListBox1->Items->Add("月:" + AnsiString((int)LastWriteST.wMonth));
            ListBox1->Items->Add("日:" + AnsiString((int)LastWriteST.wDay));
            ListBox1->Items->Add("时:" + AnsiString((int)LastWriteST.wHour));
            ListBox1->Items->Add("分:" + AnsiString((int)LastWriteST.wMinute));
            }
       }
    //释放handle
    CloseHandle( setFile );
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?