在C 中改變系統時間 得到系統時間改變通知

2021-06-03 06:29:07 字數 1753 閱讀 7369

一、改變系統時間

c#的system.datetime類提供了對日期時間的封裝,用它進行時間的轉換和處理很方便,但是我沒有在其中找到任何可以用來修改系統時間的成員。用過vc、vb等的朋友可能知道,我們可以呼叫win32 api setlocaltime來改變系統時間,看來c#中也只能如此了。setlocaltime需要乙個systemtime結構指標作為引數,這倒不難,我們可以「比葫蘆畫瓢」很快在c#中定義這個結構,但問題是,我同時還想「享受」.net framework的system.datetime在時間轉換和處理方面的便利,怎麼辦?只有自己動手了,為我們的c#中的systemtime編寫成員函式,實現和system.datetime之間的互轉。請看下面的**:

首先我為了以後呼叫方便,新建了乙個c#檔案,在裡面把setlocaltime api放到乙個名稱為win32api的類中,並把這個類放到我自己定義的namespace中,避免名稱衝突。以後我還可以不斷向這個類和命名空間新增常用的api,以便構造我自己的c# win32 api函式庫j

//forproc_win32.cs

//對常用win32 api函式及結構的宣告

using system;

using system.runtime.interopservices;

namespace farproc.win32

///

/// 轉換為system.datetime型別。

///

///

public datetime todatetime()

///

/// 靜態方法。轉換為system.datetime型別。

///

/// systemtime型別的時間。

///

public static datetime todatetime(systemtime time)

}public class win32api}

下面在winform程式中呼叫。新建乙個c# winform程式,在form上新增乙個按鈕 button1,並新增如下**:

private void button1_click(object sender, system.eventargs e)

然後就可以執行這個程式看到效果了。

二、得到系統時間改變通知

另乙個問題,如果系統時間被人為改動了,我的程式想得到通知,並做相應的處理,怎麼辦?好像很難,呵呵,其實framework早為我們準備好了。比起上乙個問題,這個似乎還要簡單一些。

在microsoft.win32命名空間中有乙個systemevents類,我們只要定製它的乙個靜態事件timechanged就ok了!!

**片斷如下:

private void form1_load(object sender, system.eventargs e)

{//定製事件

systemevents.timechanged += new eventhandler(systemevents_timechanged);

//事件處理函式

private void systemevents_timechanged(object sender, eventargs e)

{messagebox.show("系統時間被改變了,現在時間為:" + datetime.now.tostring());

注意,這個事件在console程式中是無效的,可能是因為這個事件本身要依賴視窗和視窗訊息吧。

另外,建議大家仔細看看microsoft.win32命名空間中的所有內容,還有許多有用的東西呢!!

C 得到系統時間

time time 得到系統時間 初始化 time t t t time null tm lt lt localtime t hour lt tm hour minute lt tm min second lt tm sec 在標準c c 中,可通過tm結構來獲得日期和時間,tm結構在time.h中...

C語言得到當前系統時間

void gettime 格式化時間的格式 a 星期幾的簡寫 a 星期幾的全稱 b 月分的簡寫 b 月份的全稱 c 標準的日期的時間串 c 年份的後兩位數字 d 十進位制表示的每月的第幾天 d 月 天 年 e 在兩字元域中,十進位制表示的每月的第幾天 f 年 月 日 g 年份的後兩位數字,使用基於周...

C庫得到系統當前的時間

include include include static time t end time intmain endif time end time 得到當前從1970開始的時間 crtimp struct tm cdecl mingw nothrow localtime const time t ...