[問題] 請問要排程的程式寫法

看板C_and_CPP (C/C++)作者 (Bad_To_The_Bone)時間13年前 (2013/02/07 11:22), 編輯推噓1(1014)
留言15則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 在WINDOWS內想用AT/schtasks 建立排程 但是因為使用者與權限的問題 想說把排程寫在程式本身 目前想到的做法是寫一個thread 裡面一個while(true) check目前time是否在要排程的時段內 是的話才去呼叫我要跑的外部程式 然後把這程式放在'啟動'裡面跑 不知道有沒有可以用event而非用loop檢查的可用呢 謝謝 程式碼(Code):(請善用置底文網頁, 記得排版) #include "time.h" checktimethread() { while (1) { if(isInTime(x,x,x,x); call xxxx } } bool isInTime(unsigned int starthr, unsigned int startmin, unsigned int endhr, unsigned int endmin) { time_t rawtime; struct tm *timeinfo; time(&rawtime); timeinfo = localtime(&rawtime); int tm_min = timeinfo->tm_min; int tm_hour = timeinfo->tm_hour; int now_inmin = tm_hour * 60 + tm_min; int start_inmin = starthr * 60 + startmin; int end_inmin = endhr * 60 + endmin; //start_inmin < now_inmin < end_inmin => run if (start_inmin < end_inmin) //not overnight return ((now_inmin >= start_inmin) && (now_inmin < end_inmin)); // 22:00 23 24 0 1 2 ...7 < 7:00 //start_inmin < now_inmin < 0:00 < now_inmin < end_inmin => run else//(start_inmin >= end_inmin) //overnight return ((now_inmin >= start_inmin) || (now_inmin < end_inmin)); } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.248.50

02/08 02:44, , 1F
以Timer的方式去觸發呢?
02/08 02:44, 1F

02/08 11:12, , 2F
請問有class名稱嗎 我再去google看看如何使用 感謝
02/08 11:12, 2F

02/08 11:44, , 3F
SetTimer?
02/08 11:44, 3F

02/08 16:05, , 4F
喔 用timer+持續時間可以改變這段code 但是我問的部分
02/08 16:05, 4F

02/08 16:05, , 5F
是 除了用loop來不斷的偵測現在時間以外 有沒有類似
02/08 16:05, 5F

02/08 16:07, , 6F
註冊後系統觸發的方式 而非用CMD 下的系統指令來達成
02/08 16:07, 6F

02/08 16:16, , 7F
Task Scheduler (Windows) http://ppt.cc/_F_q
02/08 16:16, 7F


02/09 23:13, , 9F
請問 我的CLSID_TaskScheduler 在RUN TIME的時候是
02/09 23:13, 9F

02/09 23:13, , 10F
{0F87369F-A4E5-4CFC-BD3E-73E6154572DD}
02/09 23:13, 10F

02/09 23:15, , 11F
但是我系統註冊的好像是 {D6277990-4C6A-11CF-8D87-00A
02/09 23:15, 11F

02/09 23:15, , 12F
{D6277990-4C6A-11CF-8D87-00AA0060F5BF} 都會註冊失敗
02/09 23:15, 12F

02/09 23:16, , 13F
我REGEDIT搜尋只有後面的 @@
02/09 23:16, 13F

02/09 23:25, , 14F
我在 CoCreateInstance填入這個GUID一樣是進到
02/09 23:25, 14F

02/09 23:26, , 15F
if (FAILED(hr)) 的判斷裡面 也就是失敗 ˇ__ˇ;
02/09 23:26, 15F
文章代碼(AID): #1H4nuJ0d (C_and_CPP)
文章代碼(AID): #1H4nuJ0d (C_and_CPP)