ورود

View Full Version : فرا خوانی Date and Time Properties ویندوز



hadavinia
پنج شنبه 02 مهر 1383, 19:31 عصر
فرا خوانی Date and Time Properties ویندوز چگونه؟

مهدی کرامتی
پنج شنبه 02 مهر 1383, 19:56 عصر
تو Google دنبال Run Control Panel Applet in Delphi بگرد.

hadavinia
پنج شنبه 14 آبان 1383, 16:45 عصر
من کدی را پیدا کردم ولی فقط در xp عمل می می کنه :cry:

فرزاد دلفی باز
جمعه 15 آبان 1383, 01:34 صبح
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;

{************************************************* ***********}

{2.}

procedure TForm1.Button1Click(Sender: TObject);
var
SystemTime: TSystemTime;
NewTime, NewDate: string;
begin
NewTime := '13:58:00';
NewDate := '02.02.2001'; // or '02/02/01'
DateTimeToSystemTime(StrToDate(NewDate) + StrToTime(NewTime), SystemTime);
SetLocalTime(SystemTime);
// Tell windows, that the Time changed!
PostMessage(HWND_BROADCAST, WM_TIMECHANGE, 0, 0); // *
end;

{
Windows 2000 and later: An application should not broadcast
the WM_TIMECHANGE message because the system will broadcast
this message when the application changes the system time.
}

{************************************************* ***********}

{3.}

function SetSystemTime(DateTime: TDateTime): Boolean;
{ (c) by UNDO }
var
tSetDati: TDateTime;
vDatiBias: Variant;
tTZI: TTimeZoneInformation;
tST: TSystemTime;
begin
GetTimeZoneInformation(tTZI);
vDatiBias := tTZI.Bias / 1440;
tSetDati := DateTime + vDatiBias;
with tST do
begin
wYear := StrToInt(FormatDateTime('yyyy', tSetDati));
wMonth := StrToInt(FormatDateTime('mm', tSetDati));
wDay := StrToInt(FormatDateTime('dd', tSetDati));
wHour := StrToInt(FormatDateTime('hh', tSetDati));
wMinute := StrToInt(FormatDateTime('nn', tSetDati));
wSecond := StrToInt(FormatDateTime('ss', tSetDati));
wMilliseconds := 0;
end;
Result := Windows.SetSystemTime(tST);
end;

BOB
جمعه 15 آبان 1383, 05:19 صبح
سلام .
شما میتوانید اجزای کنترل پانل رو به طور مستقیم فراخوانی کنید که در این مورد فایل مورد نظر Timedate.cpl میباشد.

hadavinia
دوشنبه 18 آبان 1383, 19:57 عصر
این کدا مه برای فراخوانی آن نیست :گیج:

MiRHaDi
سه شنبه 19 آبان 1383, 23:36 عصر
سلام
از RunDll32 استفاده کنی راحت همشو میتونی فراخوانی کنی !
با WinExec به همین سادگی
بای