Einzelnen Beitrag anzeigen

ColdFire

Registriert seit: 20. Mai 2003
63 Beiträge
 
Delphi 7 Professional
 
#1

TimeServer im LAN

  Alt 7. Mär 2006, 16:52
Hy Leute!

Wieder einmal stehe ich vor einem Problem! Ich Möchte einen Timeserver machen ( im Lan) der die zeiten mit den anderen clients oder die clients mit dem server abgleicht...

tja nur wie mach ich das am besten ... Zeit auslesen und ausgeben ist ja nicht die welt !
Code:
  function SetPCSystemTime(dDateTime: TDateTime): Boolean;
    const
      SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';

    var
      hToken              : THandle;
      ReturnLength        : DWORD;
      tkp,
      PrevTokenPriv       : TTokenPrivileges;
      luid                : TLargeInteger;
      dSysTime            : TSystemTime;

    begin
      Result:= False;
      if (Win32Platform = VER_PLATFORM_WIN32_NT) then
        begin
          if OpenProcessToken(GetCurrentProcess,
            TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
          begin
            try
              if not LookupPrivilegeValue(nil, SE_SYSTEMTIME_NAME, luid) then Exit;
              tkp.PrivilegeCount:= 1;
              tkp.Privileges[0].luid:= luid;
              tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
              if not AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTOKENPRIVILEGES),
                PrevTokenPriv, ReturnLength) then
                Exit;
              if (GetLastError <> ERROR_SUCCESS) then
                begin
                  raise Exception.Create(SysErrorMessage(GetLastError));
                  Exit;
                end;
            finally
              CloseHandle(hToken);
            end;
          end;
        end;
      DateTimeToSystemTime(dDateTime, dSysTime);
      Result:= Windows.SetLocalTime(dSysTime);
    end;
und
Code:
  procedure TForm1.SetTimeClick(Sender: TObject);
    var
      SystemTime : TSystemTime;
      NewTime,
      NewDate    : string;
    begin
      NewTime:= TimeToStr(Time);
      NewDate:= DateToStr(Date);
{      NewTime:= '13:58:00'; //12:00:15
      NewDate:= '02.02.2001'; // 01.02.2005  }

      DateTimeToSystemTime(StrToDate(NewDate) + StrToTime(NewTime), SystemTime);
      SetLocalTime(SystemTime);
      PostMessage(HWND_BROADCAST, WM_TIMECHANGE, 0, 0);
    end;
tja nur wir sage ich dem client bzw der client dem server hey gib mir deine zeit ( Hirnblockade)

lg CF

*** EDIT ***
Mir ist nur eine Idee gekommen und zwar das ich den dos Command (net time \\PCNAME /set) irgendwie verknüpfe
Vill hab ich auch schon zuviel gearbeitet
*** EDIT ENDE ***
thx
  Mit Zitat antworten Zitat