|
升級版 -> 定時小工具

再程序提示輸入文件路徑時輸入:Love 夢想 可以得到源代碼
升級版程序下載地址:定時小工具
舊版源代碼
===================================================
===================================================
- 首次采用彈窗~~~~
- #include <stdlib.h>
- #include <stdio.h>
- #include <windows.h>
- #include <time.h>
- #include <unistd.h>
- int nl(int a),nll(int a); // 【nl(int a)】 Sleep方式函數 【nll(int a)】 time_t方式函數
- char xuanze(char yy); // 判斷輸入選擇函數
- int dongzuo(),jilu(),fs(); //【dongzuo()】 讀取用戶指定運行動作函數 【jilu()】記錄文件函數 【fs()】選擇計時方式函數
- char ll[130]={0},lj[100]={0},file[]="鬧鈴動作.txt",kk[]="請將要運行的程序或音樂的絕對路徑復制到這里,覆蓋這行字并保存(支持DOS命令)...";
- int main()
- {
-
- system("COLOR 0a");
- system("title 歡迎使用由【遲、鈍dè豬】設計的程序~~");
- printf("*******************************************************************************");
- printf("\n\n\t\t\t\t【 說 明 】");
- printf("\n\n\t可惜的是不能實現自動開機,不過它的作用不僅僅局限于鬧鐘......");
- printf("\n\n\t嘿嘿,這是值得欣慰地方,提供兩種記時方式,以減少時間誤差......");
- printf("\n\n\t【Sleep】記時方式是讓程序暫停運行,暫停時間由用戶指定的時間......");
- printf("\n\n\t【time_t】方式記時方式是讓程序不斷讀取時間差是否等于用戶指定的時間...");
- printf("\n\n\t精確到分鐘,最低也需要1分鐘,有時間再把它精確到秒吧,O(∩_∩)O~.......");
- printf("\n\n\t最后感謝【藍雨森林】QQ:000000......");
- printf("\n\n\t解決了讓我郁悶了很久的重復使用scanf()函數無法中斷程序等待用戶輸入問題..");
- printf("\n\n\t\t\t\t\t\t遲、鈍dè豬 QQ:0000000000\n\n");
- printf("\t\t\t\t\t\t2010年12月25日 0:11 設計\n\n");
- printf("*******************************************************************************");
- system("pause");
- system("cls");
- printf("\n\n\a【請注意彈出的對話框,有可能會隱藏在程序界面的背后...】");
- jilu();// 判斷、讀取記錄文件函數
- dongzuo(); // 調用記錄用戶指定函數
- fs(); // 計時方式選擇函數
- }
-
- /*********************************/
- /*-------【計時方式選擇】------*/
- /********************************/
- int fs()
- {
- int a;
- if((MessageBox(0,"【Y】Sleep 方式記時 [無倒計時提示,誤差較小]\n\n【N】time_t方式記時 [有倒計時提示,誤差較大]","選擇記時方式",MB_YESNO))==6)
- {
- system("title 歡迎使用由【遲、鈍dè豬】設計的程序~~【Sleep方式記時】");
- printf("\n請輸入鬧鈴時間(分鐘):");
- scanf("%d",&a);
- nl(a);
- }
- else
- {
- system("title 歡迎使用由【遲、鈍dè豬】設計的程序~~【time_t方式記時】");
- printf("\n請輸入鬧鈴時間(分鐘):");
- scanf("%d",&a);
- nll(a);
- }
- strcpy(ll,"\"");
- strcat(ll,lj);
- strcat(ll,"\"");
- printf("【懶豬!時間到!該刷牙洗臉騎著破電動去上班啦...】\n\n\a\a\a");
- system(ll); // 執行用戶指定的程序、音樂或命令
- system("pause');
- exit(0);
- }
-
- /*********************************/
- /*-------【Sleep方式記時】------*/
- /********************************/
- int nl(int a)
- {
- a*=60000; // 將毫秒轉換為分鐘
- printf("\n【已進入倒計時鬧鈴!】\n\n");
- Sleep(a); // 中斷程序,等待用戶指定的時間后返回主函數
- }
-
- /**********************************/
- /*-------【time_t方式記時】------*/
- /*********************************/
- int nll(int a)
- {
- time_t start,end;
- int v,d=1,i=60,h=1;
- a*=60;// 轉化為分鐘 1分鐘=60秒
- printf("\n【已進入倒計時鬧鈴!】\n\n");
- start=time(NULL);// 開始記錄時間并賦值給變量start
- printf("距離鬧鈴時間還剩【%d】分鐘\n\n",a/60-d);
- for(;;)
- {
- end=time(NULL);// 結束記錄時間并賦值給變量end
- if((difftime(end,start))==a)// 如果開始記錄的時間到結束記錄的時間等于指定的時間 則跳出循環
- break;
- else // 否則
- {
- if((difftime(end,start))==i) // 如果開始記錄的時間到結束記錄的時間等于i=60=1分鐘 則顯示剩余時間
- {
- v=a/60-1-d;
- if(h==1)// 設定h 控制每分鐘只顯示一次提示信息
- {
- printf("距離鬧鈴時間還剩【%d】分鐘\n\n",v);
- h=0;
- }
- }
- else if((difftime(end,start))>i) // 控制每分鐘都會有顯示
- {
- h=1;
- i+=60;//記錄分鐘
- d++;//記錄秒
- }
- }
- }
- }
- /**************************************/
- /*-------記錄用戶指定文件或命令------*/
- /*************************************/
- int dongzuo()
- {
- FILE *fp;
- char r;
- if((fp=fopen(file,"w"))==NULL)
- MessageBox(0,"無法寫入動作文件","提示",MB_OK);
- else
- {
- fputs(kk,fp);
- fclose(fp);
- system(file);
- }
-
- if((fp=fopen(file,"r"))==NULL)
- puts("無法讀取動作");
- else
- {
- fscanf(fp,"%[^\n]",lj); // 不寫%s 而寫%[^\n]是因為讓fscanf()函數可以讀取空格并寫入文件 \n :代表空格
- fclose(fp);
- if((strcmp(lj,kk))==0)
- {
- MessageBox(0,"程序未檢測到你輸入了程序、音樂的絕對路徑或DOS命令","注意",MB_OK);
- dongzuo();
- }
- printf("\n\n你輸入了這行路徑或Dos命令:\n\n【%s】\n\n",lj);
- printf("【提示:當時間到了程序會自動運行上面的程序、音樂或命令...】\n\n");
- printf("確認以上的路徑或Dos命令嗎?(Y/N):");
- r=xuanze(r);
- if(r=='N'||r=='n')dongzuo();
- if((MessageBox(0,"是否保存此記錄以供下次使用?","提示",MB_YESNO))==6)
- MessageBox(0,"如果需要更改運行的程序、音樂或命令,可以刪除本目錄下的【鬧鈴動作.txt】\n\n或直接更改里面程序、音樂的絕對路徑或命令......","提示",MB_OK);
- else
- unlink(file);
-
- }
- }
-
- /***********************/
- /*-------判斷輸入------*/
- /***********************/
- char xuanze(char yy)
- {
- for(;;)
- {
-
- scanf("%c",&yy);
- fflush(stdin); // 清除一個流...避免重復使用scanf()函數是無法中斷程序等待用戶輸入 (這個問題讓我頭疼N久...)
- if(yy!='y'&&yy!='n'&&yy!='Y'&&yy!='N')
- {
- printf("\n輸入錯誤,請重新輸入:\a");
- continue;
- }
- else
- break;
- }
- return yy;
- }
- /***********************/
- /*-------歷史記錄------*/
- /***********************/
- int jilu()
- {
- FILE *fp;
- if((fp=fopen(file,"r"))==NULL);
- else
- {
- printf("\n\n\t發現記錄文件,正在讀取記錄文件...");
- fscanf(fp,"%[^\n]",lj); // 為什么不寫%s 而寫%[^\n]是因為讓fscanf()函數可以讀取空格并寫入文件 \n :代表空格
- fclose(fp);
- printf("\n\n路徑或Dos命令為:\n\n【%s】\n\n",lj);
- printf("【提示:當時間到了程序會自動運行上面的程序、音樂或命令...】\n\n");
- fs();
- }
-
- }
復制代碼
下載程序:
dsxgj-v1.0.zip
(14.93 KB, 下載次數: 6)
2015-1-11 01:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|