計時器怎麼寫

1. 如何寫計時器

除非你有個服務或者核心驅動的東西在一直執行,因為他的系統時間已經不可靠了,隨時可以修改,你只能在安裝或者說第一次執行的時候啟動你的服務,你的這個服務利用timer開始計時,但是即使這樣人家關機了貌似也要中斷了。

計時器怎麼寫

重啟後還是得從主機板拿去時間。安裝的時候記錄系統時間比如 firsttime=2011-9-22 14:23:32開始自己計時 timer設定1分鐘一次吧 統計count 這樣當前時間就是 firsttime+Count這個驅動程式是一直在執行的 這個是前提,如果人家會停掉你的驅動就沒有辦法了,然後考慮人家關機的問題,在關機之前 比較你的時間 和系統的時間的誤差,記錄下來,開機的時候自動啟動你的服務 用開機時間加上誤差時間 ,這樣哪怕人家修改時間 也不怕 ,因為關機那一瞬間的時候你記錄了系統時間 ,再到開機的那一瞬間的時間 你讀出去主機板的時間,只要保證在人家不在你儲存後通過程式去修改,那麼人家想修改就只能從硬體入手了。

很多問題 ,不能保證人家不去掉你的驅動,辦法就是去掉了 就讓人家不能用不保證人家不hook你驅動的函式進行偽裝返回,這個加密,但是人家照樣能破解你加密程式。不保證人家在你的驅動儲存時間過後同樣寫個驅動修改時間 不保證人家不會直接修改主機板時間,這個很容易,bois裡面可以修改的,還有就是人家機箱電池也可以拔掉的這些都能讓你得不到關機過後-再次開機之間的 時間差 如果得不到這個 你也得不到正確的時間。

單機的程式驗證天數一般效果都不是很好的。可能做使用次數更好點!30天就當30次咯,就當人家一天一次,除非人家開了電腦不關,或者一直休眠/睡眠模式關機,那你軟體那麼吃香了,直接多投入些成本搞U盾之類的都划算了。

這個次數你可以儲存在登錄檔或者檔案資料庫中,進行加密,加密程式碼披上vmp,如果人家會反彙編破解你的加密程式,而且會破解vmp的話那就沒話說了,因為針對高階破解人員,即使你聯網的,怎麼防都可能不起作用,除非不提供給人家。

2. 程式設計計時器怎麼編寫程式

//Timer3初始化 下面是使用timer3做的500mA計時器,給你參考

void Timer3_Init(void)

{

//主時鐘1s

INSCON|=(1<<BKS0);

TL3=(unsigned char)T3CLK_500MS;

TH3=(unsigned char)(T3CLK_500MS>>8);

TF3=0;

switch(T3CLK_DIV)

{

case CLK_DIV_8:

T3PS0=1;

T3PS1=0; //1/8預分頻

break;

case CLK_DIV_64:

T3PS0=0;

T3PS1=1; //1/64預分頻

break;

case CLK_DIV_256:

T3PS0=1;

T3PS1=1; //1/256預分頻

break;

default:

T3PS0=0;

T3PS1=0; //無預分頻

}

T3CLKS1=0;

T3CLKS0=0;

TR3=1;

}

/************************************************/

/*Function Name:void Timer3_ISP(void)

/*Input:

/*Output:

/*Description:Timer3_ISP Interrupt

/*Data:

/************************************************/

extern void os_timer(void);

void Timer3_ISP(void) interrupt 11

{

uchar data temp_inscon;

temp_inscon=INSCON;

INSCON&=~(1<<BKS0);

os_timer(); //這個中斷500mA進來一次

INSCON=temp_inscon;

}

3. java 計時器 怎麼寫

public class Test{

public static void main(String[] args){

Runner r = new Runner();

Thread t = new Thread(r);

t.start();//這個地方要丟擲異常,你在Myeclipse上會自動提示的,我忘了

}

}

class Runner implements Runnable{

public void run()

{

whie(true){

System.out.println("aaa");

Thread.sleep(10000);//設定10秒,這個地方也會丟擲異常

}

}

}

總體設計是通過執行緒來控制時間

4. JAVA計時器,怎麼寫

import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class TimeCount extends JFrame implements ActionListener{ ThreadCount tc=new ThreadCount(this); Thread thread=new Thread(tc); JPanel panelN=new JPanel(),panelC=new JPanel(); JLabel label=new JLabel("計時器"); JButton butnStart=new JButton("開始"); boolean toEnd; public TimeCount() { setBounds(100,100,300,300); setVisible(true); label.setFont(new Font(null,Font.BOLD,22)); panelN.add(label); add(panelN,BorderLayout.NORTH); panelC.add(butnStart); add(panelC,BorderLayout.CENTER); butnStart.addActionListener(this); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==butnStart){ if(!thread.isAlive()){ thread=new Thread(tc); thread.start(); }else { toEnd=true; } } } public static void main(String[] args) { new TimeCount(); } } class ThreadCount implements Runnable{ TimeCount lc; public ThreadCount(TimeCount lc) { super(); this.lc = lc; } public void run() { int i=1; while(true){ if(lc.toEnd){ lc.toEnd=false; lc.butnStart.setText("開始"); return; } try { Thread.sleep(2); } catch (InterruptedException e) { // TODO: handle exception } i+=2; int min=i/60000; int second=(i%60000)/1000; int mm=i%1000; String show=""; if(min>0) show+=min+":"; if(second>0) show+=second+"."; show+=mm; lc.label.setText(show); } } } 滿意請採納。

5. C#計時器怎麼寫

點開始以後就跳到另外一個窗體上 這個容易吧

彈出提示框 “會彈出一個窗體說還有3分鐘” messagebox 這個容易吧

剩下的就是計時了 , 你都已經說了 用 timer控制元件 ,那還是百度下 timer控制元件的用法吧 其實就是拖一個控制元件過來,邏輯在控制元件的回撥函式中使用就行了,

開始設定一個7分鐘 到點了會觸發回撥,然後在回撥中繼續設定為3分鐘 啟動timer 到點後又觸發回撥 細節處理好就行,閒麻煩搞兩個timer ,或者讓timer回撥一分鐘就觸發 觸發完成用個變數儲存累加時間 如果是7分鐘就是提示 ,10分鐘關閉。每次回撥完成後繼續啟動該timer繼續計時直到10分鐘停止

6. 怎樣寫一個高精度的計時器

你的需求有問題,考慮一下是否必須達到毫秒精度。

一般來說遊戲也只要20ms左右精度即可,可以用多媒體定時器來實現。

必須包含:

#include <windows.h>

#include <mmsystem.h>

#pragma comment(lib,"winmm.lib")

使用多媒體定時器timeSetEvent()函式,該函式定時精度為ms級。利用該函式可以實現週期性的函式呼叫。如示例工程中的Timer6和Timer6_1。函式的原型如下:

MMRESULT timeSetEvent( UINT uDelay,

UINT uResolution,

LPTIMECALLBACK lpTimeProc,

WORD dwUser,

UINT fuEvent )

該函式設定一個定時回撥事件,此事件可以是一個一次性事件或週期性事件。事件一旦被啟用,便呼叫指定的回撥函式, 成功後返回事件的識別符號程式碼,否則返回NULL。函式的引數說明如下:

uDelay:以毫秒指定事件的週期。

Uresolution:以毫秒指定延時的精度,數值越小定時器事件解析度越高。預設值為1ms。

LpTimeProc:指向一個回撥函式。

DwUser:存放使用者提供的回撥資料。

FuEvent:指定定時器事件型別:

TIME_ONESHOT:uDelay毫秒後只產生一次事件

TIME_PERIODIC :每隔uDelay毫秒週期性地產生事件。

具體應用時,可以通過呼叫timeSetEvent()函式,將需要週期性執行的任務定義在LpTimeProc回撥函式 中(如:定時取樣、控制等),從而完成所需處理的事件。需要注意的是,任務處理的時間不能大於週期間隔時間。另外,在定時器使用完畢後,應及時呼叫timeKillEvent()將之釋放。

QueryPerformanceCount是按CPU頻率(想想看吧2.5GHz)來計數的,很耗資源的,理論上可以達到微秒級,不過還要考慮windows程序排程。

另windows本來就不是實時作業系統,你的期望不要太高。

實時要求高的話,工程上用微控制器比較多。

7. 用c語言怎麼寫秒計時器

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar tt,num;

uchar shi,ge,temp;

uchar code table[]=

{0x3f,0x06,0x5b,0x4f,<br>0x66,0x6d,0x7d,0x07,<br>0x7f,0x6f};

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void display(uchar shi,uchar ge)

{

shi=temp/10;

ge=temp%10; P2=table[shi];

P3=0xfe;

delay(1);

P2=0x00; P2=table[ge];

P3=0xfd;

delay(1);

P2=0x00;

}

void timer0() interrupt 1

{

TH0=-50000/256;

TL0=-50000%256;

tt++;

if(tt>=20)

{

tt=0;

temp++;

if(temp==60)

temp=0;

}

}

void init()

{

TMOD=0x01;

TH0=-50000/256;

TL0=-50000%256;

EA=1;

ET0=1;

TR0=1;

tt=0;

temp=0;

}

void main()

{

init();

while(1)

{

display(shi,ge);

}

} 這個是60秒的,供參考