線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3178
推到 Plurk!
推到 Facebook!

如何讓電腦右下角的時間自動更新??

答題得分者是:chris_shieh
depblue
一般會員


發表:38
回覆:29
積分:13
註冊:2004-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-12 10:32:51 IP:211.22.xxx.xxx 未訂閱
我現在使用兩台電腦,因為兩台電腦的系統時間可能會不一樣, 所以每當我執行B電腦的一隻程式時,會自動抓A電腦的系統時間 當成B電腦的系統時間    現在問題是:  A電腦時間是抓到了,而且B電腦的系統時間也跟A電腦一樣了  可是B電腦右下角的時間顯示卻是沒更新之前的舊時間     請問要如何讓B電腦右下角的時間能即時更新??  
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-12 11:22:27 IP:61.63.xxx.xxx 未訂閱
利用Dos command: Time
uses ..ShellAPI;    procedure SetCurrentTime(sTime:String);
begin
  ShellExecute(Self.Handle, nil, 'cmd.exe', PChar('/C time '  sTime), nil, SW_HIDE);
end;    用法:
procedure TForm1.Button1Click(Sender: TObject);
var
  sTime:String;
begin
  sTime:='11:02:00';
  SetCurrentTime(sTime);
end;
@瞭解越多.懂得越少@
depblue
一般會員


發表:38
回覆:29
積分:13
註冊:2004-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-12 15:37:28 IP:211.22.xxx.xxx 未訂閱
引言: 利用Dos command: Time
uses ..ShellAPI;    procedure SetCurrentTime(sTime:String);
begin
  ShellExecute(Self.Handle, nil, 'cmd.exe', PChar('/C time '  sTime), nil, SW_HIDE);
end;    用法:
procedure TForm1.Button1Click(Sender: TObject);
var
  sTime:String;
begin
  sTime:='11:02:00';
  SetCurrentTime(sTime);
end;
@瞭解越多.懂得越少@
我照著上面的方法處理 不過,電腦右下角的時間顯示還是沒有更新 而且,我想問一下 cmd.exe是指什麼檔案 PChar('/C time ' sTime)這個代表什麼意思?? 謝謝!!
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-12 17:31:25 IP:61.58.xxx.xxx 未訂閱
cmd.exe是開啟DOS命令提示字元的執行檔 (以前的版本是Command.com)    ShellExecute的參數說明 PChar('cmd.exe') : 執行開啟DOS視窗 PChar('/C time ' + sTime) : 這是 cmd.exe 的參數       這兩行合起來代表執行  cmd.exe /C time "11:02:00" 你可以試試看直接在 「開始」-> 「執行」鍵入 cmd.exe /C time "11:02:00" 右下角時間應該會變更    程式碼稍有一些筆誤 修改如下 我執行過可以更改    
uses ShellAPI;    procedure SetCurrentTime(sTime:String);
begin
  ShellExecute(0, nil, 'cmd.exe', PChar('/C time '  sTime), nil, SW_HIDE);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  sTime:String;
begin
  sTime:='17:30:00';
  SetCurrentTime(sTime);
end;
@瞭解越多.懂得越少@
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-12 20:52:42 IP:61.71.xxx.xxx 未訂閱
引言: 我現在使用兩台電腦,因為兩台電腦的系統時間可能會不一樣, 所以每當我執行B電腦的一隻程式時,會自動抓A電腦的系統時間 當成B電腦的系統時間 現在問題是: A電腦時間是抓到了,而且B電腦的系統時間也跟A電腦一樣了 可是B電腦右下角的時間顯示卻是沒更新之前的舊時間 請問要如何讓B電腦右下角的時間能即時更新??
提供另一種用法, 不透過 dos command 的方法, 直接以win32 API來處理會更直接
procedure TForm_DateRejust.btn_DateSetClick(Sender: TObject);
          var newDay: TSystemTime;
              mYear, mMonth, mDay: word;
              mHour, mMinute, mSecond, mMSecond: word;
begin
     DecodeDate(Date, mYear, mMonth, mDay);
     DecodeTime(Time, mHour, mMinute, mSecond, mMSecond);
     newDay.wYear := mYear;
     newDay.wMonth:= mMonth;
     newDay.wDay  := mDay;
     newDay.wDayOfWeek:=0;     // sun 為第一天的開始
     newDay.wHour:= mHour;
     newDay.wMinute:= mMinute;
     newDay.wSecond:= mSeccond;
     newDay.wMilliseconds:=0;  // 微秒可以不要設定
     SetLocalTime(newDay);
     SendMessage(HWND_TOPMOST, WM_TIMECHANGE, 0, 0);
end;
depblue
一般會員


發表:38
回覆:29
積分:13
註冊:2004-12-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-12 23:08:37 IP:59.114.xxx.xxx 未訂閱
多謝解答,我的問題現在獲得解決了    謝謝!!
系統時間:2024-06-02 0:06:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!