亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nettimeclient.pas

?? VC++實現的時間同步程序
?? PAS
字號:
{ ************************************************************************

   NetTime is copyrighted by Graham Mainwaring. Permission is hereby
   granted to use, modify, redistribute and create derivative works
   provided this attribution is not removed. I also request that if you
   make any useful changes, please e-mail the diffs to graham@mhn.org
   so that I can include them in an 'official' release.

  ************************************************************************ }

unit NetTimeClient;

interface

uses Windows, Classes, SysUtils, NetTimeCommon, NetTimeIPC,
  Dialogs, ExtCtrls, Winsock, WinsockUtil;

type

  TNetTimeProxy = class(TNetTimeServerBase)
  private
    FOnStateChange: TNotifyEvent;
    FOnWarnAdj: TWarnAdjEvent;
    FOnExit: TNotifyEvent;
    LocalUnsync: boolean;
    SyncTimer: TTimer;
    ClientIPC: TNetTimeIPCClient;
    ServerStatus: TServerStatusBlock;
    procedure SyncTimerEvent(Sender: TObject);
    procedure AdviseStatus(const Status: TServerStatusBlock);
    function DoWarnAdj(const ServerTime, StationTime: TDateTime): boolean;
    procedure ExitNow;
  public
    function GetActive: boolean; override;
    function GetStatus: TSyncStatus; override;
    function GetLastUpdateTime: TDateTime; override;
    function GetStateChange: TNotifyEvent; override;
    procedure SetStateChange(const sc: TNotifyEvent); override;
    function GetWarnAdj: TWarnAdjEvent; override;
    procedure SetWarnAdj(const wa: TWarnAdjEvent); override;
    function GetOnExit: TNotifyEvent; override;
    procedure SetOnExit(const ex: TNotifyEvent); override;
    function GetServer: boolean; override;
    procedure SetServer(const sv: boolean); override;
    procedure SetConfig(const cfg: TServerConfigBlock); override;
    function GetConfig: TServerConfigBlock; override;
    procedure ForceUpdate; override;
    procedure KillEverything; override;
    function UpdateNow: boolean; override;
    constructor Create;
    destructor Destroy; override;
  end;

implementation

uses Forms, timeconv;

function TNetTimeProxy.GetActive: boolean;
begin
  result := ServerStatus.Active;
end;

function TNetTimeProxy.GetStatus: TSyncStatus;

var
  i: integer;

begin
  if LocalUnsync then
    begin
      result.Synchronized := false;
      for i := 0 to MaxServers-1 do
        result.ss[i] := ssUnconfigured;
    end
  else
    result := ServerStatus.Status;
end;

function TNetTimeProxy.GetLastUpdateTime: TDateTime;
begin
  result := ServerStatus.LastUpdateTime;
end;

function TNetTimeProxy.GetStateChange: TNotifyEvent;
begin
  result := FOnStateChange;
end;

procedure TNetTimeProxy.SetStateChange(const sc: TNotifyEvent);
begin
  FOnStateChange := sc;
end;

function TNetTimeProxy.GetWarnAdj: TWarnAdjEvent;
begin
  result := FOnWarnAdj;
end;

procedure TNetTimeProxy.SetWarnAdj(const wa: TWarnAdjEvent);
begin
  FOnWarnAdj := wa;
end;

function TNetTimeProxy.GetOnExit: TNotifyEvent;
begin
  result := FOnExit;
end;

procedure TNetTimeProxy.SetOnExit(const ex: TNotifyEvent);
begin
  FOnExit := ex;
end;

function TNetTimeProxy.GetServer: boolean;
begin
  result := ServerStatus.Server;
end;

procedure TNetTimeProxy.SetServer(const sv: boolean);
begin
  ClientIPC.SetServer(sv);
  ForceUpdate;
end;

procedure TNetTimeProxy.SetConfig(const cfg: TServerConfigBlock);
begin
  ClientIPC.SetConfig(cfg);
  ForceUpdate;
end;

function TNetTimeProxy.GetConfig: TServerConfigBlock;
begin
  result := ServerStatus.Config;
end;

procedure TNetTimeProxy.SyncTimerEvent(Sender: TObject);

var
  lsu: boolean;

begin
  lsu := SecondsApart(Now,ServerStatus.LastUpdateTime) >
    int64(ServerStatus.Config.LostSync);
  if lsu <> LocalUnsync then
    begin
      LocalUnsync := lsu;
      if Assigned(FOnStateChange) then
        FOnStateChange(Self);
    end;
end;

procedure TNetTimeProxy.ForceUpdate;
begin
  ServerStatus := ClientIPC.GetServerStatus;
end;

function TNetTimeProxy.UpdateNow: boolean;
begin
  result := ClientIPC.UpdateNow;
end;

constructor TNetTimeProxy.Create;
begin
  inherited Create;
  LocalUnsync := false;
  ClientIPC := TNetTimeIPCClient.Create(AdviseStatus,
    DoWarnAdj,ExitNow);
  try
    ClientIPC.InitResources;
  except on e: exception do
    begin
      ShowMessage('Could not initialize IPC: '+e.Message);
      Halt;
    end;
  end;
  SyncTimer := TTimer.Create(nil);
  SyncTimer.OnTimer := SyncTimerEvent;
  SyncTimer.Interval := 1000;
  SyncTimer.Enabled := true;
end;

destructor TNetTimeProxy.Destroy;
begin
  SyncTimer.Enabled := false;
  SyncTimer.Free;
  ClientIPC.Free;
  inherited;
end;

procedure TNetTimeProxy.AdviseStatus(const Status: TServerStatusBlock);
begin
  ServerStatus := Status;
  if Assigned(FOnStateChange) then
    FOnStateChange(Self);
end;

function TNetTimeProxy.DoWarnAdj(const ServerTime, StationTime: TDateTime): boolean;
begin
  if Assigned(FOnWarnAdj) then
    result := FOnWarnAdj(Self, ServerTime,StationTime)
  else
    result := true;
end;

procedure TNetTimeProxy.ExitNow;
begin
  if Assigned(FOnExit) then
    FOnExit(Self);
end;

procedure TNetTimeProxy.KillEverything;
begin
  ClientIPC.KillEverything;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产激情一区二区三区蜜月 | 欧美一区二区在线不卡| 在线免费一区三区| 精品一区二区在线看| 精品综合免费视频观看| kk眼镜猥琐国模调教系列一区二区| 色综合久久综合网欧美综合网| 美日韩一区二区| 国产精品中文字幕一区二区三区| 91在线视频免费91| 国产日韩av一区二区| 日韩高清不卡一区| 欧美日本高清视频在线观看| 亚洲女与黑人做爰| 色综合网站在线| 亚洲在线观看免费| 国产精品一二三四区| 久久女同精品一区二区| 国产一区视频在线看| 7777精品久久久大香线蕉| 综合av第一页| 国产suv精品一区二区三区| 欧美一区二区三区性视频| 国产精品久久久久aaaa樱花| 国内精品在线播放| 欧美亚洲日本国产| 亚洲激情自拍偷拍| 国产自产2019最新不卡| 91精品国产综合久久福利软件 | 26uuu精品一区二区在线观看| 亚洲成年人网站在线观看| 99视频一区二区| 亚洲人xxxx| 91九色02白丝porn| 亚洲精品你懂的| 99久久久免费精品国产一区二区| 日韩美女一区二区三区四区| 美腿丝袜亚洲综合| 91精品久久久久久久99蜜桃| 天天射综合影视| 7878成人国产在线观看| 国产精品国产三级国产| 一本大道av一区二区在线播放 | 国产成人自拍高清视频在线免费播放| 日韩欧美国产一区在线观看| 日本乱人伦aⅴ精品| 精品国精品国产| 亚洲一区中文日韩| 一区二区在线电影| 国产在线一区二区| 7777女厕盗摄久久久| 亚洲大片精品永久免费| 激情欧美一区二区三区在线观看| 99热这里都是精品| 久久综合色之久久综合| 亚洲成av人片在线观看无码| 精品在线观看视频| 欧美日韩午夜在线视频| 国产精品白丝在线| 欧美aⅴ一区二区三区视频| 91美女视频网站| 国产精品欧美久久久久无广告| 同产精品九九九| 欧美日韩在线播放| 亚洲乱码国产乱码精品精可以看| 国产精品一区二区不卡| 欧美一区永久视频免费观看| 亚洲欧洲美洲综合色网| 92精品国产成人观看免费| 久久久久青草大香线综合精品| 午夜激情一区二区| 欧美三级中文字幕在线观看| 亚洲欧美在线高清| 91成人在线免费观看| 亚洲日本丝袜连裤袜办公室| 成人午夜电影网站| 中文字幕国产一区| 91片黄在线观看| 午夜精品爽啪视频| www成人在线观看| 国产91综合一区在线观看| 久久久久久久久久美女| 北条麻妃国产九九精品视频| 亚洲精品免费在线观看| 欧美人与性动xxxx| 国产成人免费在线视频| 亚洲视频一二区| 91精品婷婷国产综合久久 | 一区精品在线播放| 欧美一级黄色片| 欧美电影免费观看高清完整版| 色欧美片视频在线观看在线视频| 国产91露脸合集magnet| 国产成人精品一区二区三区网站观看| 六月婷婷色综合| 国产福利一区二区三区视频| 国产成人啪午夜精品网站男同| 久久福利资源站| 五月天中文字幕一区二区| 国产天堂亚洲国产碰碰| 久久综合久久综合亚洲| 91 com成人网| 91精品中文字幕一区二区三区| 在线一区二区三区四区五区| 成人va在线观看| 99精品视频一区二区| 91免费看`日韩一区二区| 成人午夜av影视| 91网站视频在线观看| 色伊人久久综合中文字幕| 色综合久久久网| 欧美色倩网站大全免费| 色哟哟一区二区在线观看| 欧美日韩色一区| 欧美性猛交一区二区三区精品| 欧美三级三级三级| 3751色影院一区二区三区| 精品国产免费一区二区三区四区| 日韩欧美激情四射| 久久亚洲精华国产精华液| 中文字幕一区日韩精品欧美| 国产精品你懂的在线欣赏| 亚洲免费电影在线| 亚洲成人午夜影院| 国产一区二区三区黄视频| 成人一区二区三区| 欧美日本不卡视频| 日韩亚洲国产中文字幕欧美| 国产午夜亚洲精品不卡| 亚洲天堂中文字幕| 国产成人鲁色资源国产91色综| 一本一道综合狠狠老| 日韩美女视频一区二区在线观看| 欧美激情一区二区在线| 午夜视频久久久久久| 国产精品久久久久久久第一福利| 爽好久久久欧美精品| 久久精品国产亚洲一区二区三区| 在线免费观看一区| 亚洲一级二级三级| 欧美二区在线观看| 九九久久精品视频| 亚洲愉拍自拍另类高清精品| 一区二区欧美国产| 欧美天堂亚洲电影院在线播放| 亚洲欧美偷拍三级| 在线观看www91| 日韩精品亚洲专区| 久久综合成人精品亚洲另类欧美| 韩国av一区二区三区在线观看| 国产午夜精品美女毛片视频| 欧美日韩一区二区在线观看视频| 综合网在线视频| 6080国产精品一区二区| 久久99深爱久久99精品| 国产精品丝袜在线| 欧美视频中文一区二区三区在线观看| 亚洲国产欧美一区二区三区丁香婷| 欧美日韩视频在线第一区| 国产乱人伦偷精品视频不卡| 一区二区三区日本| 久久精品综合网| 精品国产精品一区二区夜夜嗨| 午夜婷婷国产麻豆精品| 婷婷夜色潮精品综合在线| 久久国产生活片100| 粉嫩在线一区二区三区视频| 精品视频999| 亚洲男人的天堂一区二区| 国产欧美精品一区| 蜜臀久久99精品久久久久宅男| 99视频有精品| 激情国产一区二区| 精油按摩中文字幕久久| 亚洲国产精品久久不卡毛片| 免费观看一级欧美片| 99视频精品在线| 国产日韩欧美精品综合| 欧美一区二区视频在线观看2020 | 99在线精品免费| 欧美xxxxxxxxx| 亚洲午夜久久久久久久久电影院 | 国产精品99久久久| 欧美一级片在线| 亚洲午夜精品一区二区三区他趣| 成人国产精品免费| 国产日韩精品一区二区三区| 免费观看在线色综合| 欧美一区二区三区四区视频| 夜夜操天天操亚洲| 色94色欧美sute亚洲13| 亚洲欧洲另类国产综合| 成人av电影免费观看| 国产欧美日本一区视频| 丰满亚洲少妇av| 欧美激情综合网| 国产suv精品一区二区三区| 久久久国际精品| 成人av在线一区二区| 国产精品国产三级国产专播品爱网|