|
升级版 -> 定时小工具

再程序提示输入文件路径时输入: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)
|
|