[英]How to use setlocaltime in delphi 7?
包含更改時間例程的程序在 Borland Delphi 7 IDE 中運行時確實會更改時間。 但是當它獨立運行(在Delphi IDE之外)時,它不會改變時間。 我正在使用 Windows 7。你能幫忙嗎? 謝謝你。
...
procedure TForm1.changetime;
begin
DateSeparator:='-';
ShortDateFormat:='yyyy-MM-dd';
LongDateFormat:='yyyy''Year'',MM''Month'',dd''Date''';
TimeSeparator:=':';
DateTimetoString(date,'yyyy-mm-dd',now);
DateTimetoString(time,'hh:nn:ss',now);
cd:='2014-06-01 '+time;
d1:=StrToDateTime(cd);
DateTimeToSystemTime(d1,systemtime);
SetLocalTime(SystemTime);
end;
...
我的超能力告訴我,您正在使用管理權限運行 Delphi 7 IDE。
如果是這樣,當您的應用程序從 IDE 啟動時,它們會被您的應用程序進程繼承。 但是,當然,當您通過在 Windows 資源管理器(例如)中雙擊其圖標來運行您的應用程序時,它會以未提升的權限執行。
要更改系統時間,您需要提升權限。 這解釋了觀察到的行為。
當您想從調試器外部啟動應用程序時,請確保將其提升運行。 例如,您可以右鍵單擊其圖標並選擇“以管理員身份運行”。
事實上,你幾乎可以自己弄清楚這一點。 因為每次使用 Windows API 函數時,都會檢查其返回值。 從文檔:
如果函數成功,則返回值非零。
如果函數失敗,則返回值為零。 要獲取擴展錯誤信息,請調用
GetLastError
。
所以你應該做
if not SetLocalTime(st) then
RaiseLastOSError
這在我的系統上告訴我我沒有足夠的權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.